根据Pandas中的矢量值范围选择行

时间:2016-05-04 14:24:56

标签: numpy pandas

我尝试使用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()并不进行三向分割。

1 个答案:

答案 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并不是那么有用,因为您如何知道验证集的代表性如何?