假设我有一个分类特征,颜色,它取值
['red','blue','green','orange'],
我想用它来预测随机森林里的东西.如果我对它进行单热编码(即我将其更改为四个虚拟变量),我如何告诉sklearn这四个虚拟变量实际上是一个变量?具体来说,当sklearn随机选择要在不同节点使用的特征时,它应该包括红色,蓝色,绿色和橙色虚拟对象,或者它不应包括任何一个.
我听说没有办法做到这一点,但我认为必须有一种方法来处理分类变量,而不是随意将它们编码为数字或类似的东西.
当我将.ix与DataFrame一起使用时,有没有办法强制pandas总是返回一个DataFrame?
例如,如果我运行以下行,
import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(6).reshape(3, 2), index=[0, 0, 1])
x = df.ix[0]
y = df.ix[1]
Run Code Online (Sandbox Code Playgroud)
然后x将是一个DataFrame,因为0在索引中出现两次,而y将是一个Series,因为1在索引中是唯一的.我希望y也是一个DataFrame(因为我在结果上使用了iterrows(),它没有为Series定义).
我可以检查.ix返回的类型并在需要时将其转换为DataFrame,但我认为有更好的方法.
注:由于熊猫v0.20中,.ix 索引器已被弃用赞成.iloc/ .loc.
我正在寻找随机森林的应用程序,并且在Kaggle上发现了以下知识竞赛:
https://www.kaggle.com/c/forest-cover-type-prediction。
遵循以下建议
我曾经sklearn用500棵树建造一个随机森林。
的.oob_score_为〜2%,但对抵抗集比分为〜75%。
只有七个类别可以分类,因此2%的确很低。当我进行交叉验证时,我也始终获得接近75%的分数。
谁能解释保持.oob_score_和交叉验证分数之间的差异?我希望它们会相似。
这里有一个类似的问题:
https://stats.stackexchange.com/questions/95818/what-is-a-good-oob-score-for-random-forests
编辑:我认为这也可能是一个错误。
该代码由我张贴的第二个链接中的原始海报给出。唯一的变化是,oob_score = True在构建随机森林时必须设置。
我没有保存我做过的交叉验证测试,但是如果人们需要查看它,我可以重做它。
对于大量日期,我需要计算下一个工作日,我在那里计算假期.
目前,我正在使用类似下面的代码,我从IPython笔记本中粘贴了它:
import pandas as pd
from pandas.tseries.holiday import USFederalHolidayCalendar
cal = USFederalHolidayCalendar()
bday_offset = lambda n: pd.datetools.offsets.CustomBusinessDay(n, calendar=cal)
mydate = pd.to_datetime("12/24/2014")
%timeit with_holiday = mydate + bday_offset(1)
%timeit without_holiday = mydate + pd.datetools.offsets.BDay(1)
Run Code Online (Sandbox Code Playgroud)
在我的计算机上,with_holiday行在~12毫秒内运行; 并且without_holiday线在~15微秒内运行.
有没有办法让bday_offset函数更快?
我无法理解tensorflow的输入参数dynamic_rnn.如果我能理解如何将static_rnn输入转换为输入,那将会有很大帮助dynamic_rnn.
对于a static_rnn,输入应该是T张量的长度列表,其形状是[batch_size, input_size],T序列长度在哪里.这对我来说很有意义.
对于a dynamic_rnn,输入应该是Tensor of shape [batch_size, max_time, ...].我不明白如何融入input_size这里.更一般地说,我不知道你还可以在省略号中添加什么.
例如,假设我的数据由50个字符长的句子组成,那么input_size字母表中的字母数就是这样.对于a static_rnn,我将制作长度为50的形状为张量的张量[batch_size, input_size].如何将此张量列表转换为单个张量,以便我可以将它转换为dynamic_rnn?
我想匹配所有不以美元符号$开头的整数.
例如,在
"我在10个12英寸潜艇上花了100美元",
我想提取10和12而不是100.
我尝试了以下方法:
\b(?!\$)\d+\b
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它不起作用.例如,如果我将'\''替换为'1',它会给我不以'1'开头的数字.