【发布时间】:2016-01-03 07:07:55
【问题描述】:
我尝试使用 Python 中的 Scikit Learn 创建一个预测模型。我有一个大约 850k 行和 17 列的数据框。最后一列是我的标签,其他列是我的特征。
from sklearn import cross_validation
from sklearn.ensemble import RandomForestClassifier
from sklearn import metrics
predictors = [a list of my predictors columns]
alg = RandomForestClassifier(random_state=1, n_estimators=150, min_samples_split=8, min_samples_leaf=4)
scores = cross_validation.cross_val_score(alg, train[predictors],train["Sales"], cv=5)
print(scores.mean())
但是,当我运行代码时,我收到以下警告:
/Users/.../anaconda/lib/python2.7/site-packages/sklearn/cross_validation.py:417: Warning: The least populated class in y has only 1 members, which is too few. The minimum number of labels for any class cannot be less than n_folds=5.
% (min_labels, self.n_folds)), Warning)
我不确定我是否理解了警告信息。我以为我只会在小样本上使用它。
【问题讨论】:
-
问题是目标中的类稀疏。
y的上课频率是多少? -
@David 不确定我是否理解得很好,但
train["Sales"]是一个从 0 到 10.000 的整数列,有许多不同的发生。因此,如果您的意思是目标具有重复值。 -
所以听起来你在预测一个连续变量而不是一个分类变量,对吗?如果是这样,您应该使用回归而不是分类,即:
RandomForestRegressor
标签: python machine-learning scikit-learn cross-validation