sklearn
中来自初学者的问题,请告知。
我已经使用以下参数训练了RandomForestClassifier
模型:
n_estimators = 32,
criterion = 'gini',
max_depth = 380,
该参数不是随机选择的,由于某些原因它们表现出最好的性能……尽管对我自己来说似乎很奇怪。
使用joblib.dump
和compress=3
使用的数据是:
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
答案 0 :(得分:0)
尝试使用min_samples_leaf
而不是max_depth来限制树的深度。这为树的不同路径和不同的估计量提供了不同的深度。希望有可能找到一个具有较低平均值深度的良好性能的模型。
我喜欢将min_samples_leaf设置为float,这意味着采样数的一小部分。尝试在(0.0001,0.1)之间进行网格搜索