【发布时间】:2019-08-02 17:26:50
【问题描述】:
sklearn初学者的问题,请指教。
我使用以下参数训练了 RandomForestClassifier 模型:
n_estimators = 32,
criterion = 'gini',
max_depth = 380,
这个参数不是随机选择的,出于某种原因,它们表现出最好的性能......虽然我觉得很奇怪。
使用joblib.dump和compress=3保存时,模型大小约为5.5GB
使用的数据是:
tfidf=TfidfVectorizer()
X_train=tfidf.fit_transform(X_train)
和
le=LabelEncoder()
le.fit(y_train)
y_train=le.fit_transform(y_train)
样本大小为 4.7Mio 记录拆分为 0.3(70% 训练,30% 测试)
现在,我有一个问题,也许有人可以帮忙:
模型使用的参数和模型大小相对于样本大小是否有意义?可能参数的选择对于增大尺寸的模型并不是最优的(我确实明白这里增大尺寸的主要参数是max_depth,但结果是最好的……)
也许对参数或数据准备有任何建议,根据我对这个示例的经验,我注意到以下几点:
1.增加n_estimators对结果几乎没有影响;
2.另一方面增加max_depth带来显着的改进。例如:
- max_depth = 10 - accuracy_score 0.3
- max_depth = 380 - accuracy_score 0.95
非常欢迎任何建议,建议!:)
UPD。准确度结果
训练分数:0.988 classifier.score
OOB 分数:0.953 classifier.oob_score_
测试分数:0.935 sklearn.metrics -> accuracy_score
【问题讨论】:
-
准确性分数是在测试集上计算的吗?
-
你可能过拟合了 - 能否请你发布你的验证分数和训练分数?
-
@FChm 已更新,谢谢
-
@SeljukGülcan 已更新
-
当您使用
max_depth=10或在它附近时,您遇到了多少准确性权衡?
标签: python scikit-learn random-forest