0
我嘗試使用Scikit在Python中學習來創建預測模型。我有一個約850k行和17列的數據框。最後一列是我的標籤,其他是我的功能。Scikit在CrossValidation上沒有足夠的摺疊學習
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
@David不知道我是否理解得很好,但train [「Sales」]是一個從0到10.000的整數列,出現了許多不同的情況。所以,如果你的意思是目標有重複的價值。 – Tasos
所以這聽起來像是你預測了一個與分類變量相反的連續變量,對嗎?如果是這樣,你應該使用迴歸而不是分類,即:'RandomForestRegressor' – David