我尝试使用numpy和pandas将数据分成训练,验证和测试。
我知道这有效(来自sklearn
Iris示例):
DataFrame['is_train'] = np.random.uniform(0, 1, len(train)) <= .75
train, test = DataFrame[DataFrame['is_train']==True], DataFrame[DataFrame['is_train']==False]
但是我如何为一系列值做类似的事情,例如.33&lt; x&lt; 0.66
这不起作用:
DataFrame['segment'] = np.random.uniform(0, 1, len(df))
DataFrame[DataFrame['segment'] < .33 & DataFrame['segment'] < .66]
最后,如果您意识到更好的方式,请祈祷告诉。
据我所知,sklearn
&#39; cross_validation.train_test_split()
并不进行三向分割。
答案 0 :(得分:1)
用括号括起条件:
DataFrame[(DataFrame['segment'] < .33) & (DataFrame['segment'] < .66)]
&
运算符的优先级高于<
:https://docs.python.org/2/reference/expressions.html#operator-precedence
通常也会根据您想要的任何标准将数据分成不同的分割:http://scikit-learn.org/stable/modules/cross_validation.html#cross-validation并迭代各种分割以测试模型的稳健性。拥有固定验证集的IMO并不是那么有用,因为您如何知道验证集的代表性如何?