机器学习,不同的clfs在哪里?

时间:2019-04-30 15:19:35

标签: python scikit-learn

我已经使用kfold创建了10个分类器。 现在,我需要选择一个分类器来进行预测。 这些分类器之一比其他分类器好吗?或者这些分类器之间没有区别?

kf=KFold(10,True)
sum_jing=0
sum_recall=0
for train_index,test_index in kf.split(x2):
    x_train,x_test=x2.loc[train_index],x2.loc[test_index]
    y_train,y_test=y2.loc[train_index],y2.loc[test_index]
    #clf = RandomForestClassifier(n_estimators=100, max_depth=2, random_state=0,class_weight="balanced")#balanced比较准0.93#0.7
    #clf = RandomForestClassifier(n_estimators=100, random_state=0,class_weight="balanced",max_depth=2,max_features="auto")#0.93#0.83
    clf= RandomForestClassifier(n_estimators=100, random_state=0,class_weight="balanced_subsample",max_depth=2,max_features="auto")#0.93#0.73-0.89
    clf.fit(x_train,y_train)
    #print("精度",clf.score(x_test,y_test))
    y_predict=clf.predict(x_test)
    sum_jing=sum_jing+clf.score(x_test,y_test)
    sum_recall=sum_recall+metrics.recall_score(y_test,y_predict,)
    #print("召回率",metrics.recall_score(y_test,y_predict))
print(sum_jing/10)
print(sum_recall/10)
from sklearn.externals import joblib
import os
os.chdir("chen")
joblib.dump(clf, "train_model.m")

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您正在比较三个不同的RandomForestModels? 它们可能完全相同,具体取决于超参数实际上对结果模型产生的影响。

除非您非常确定这三个是唯一的替代方案, 我建议进行超参数调整。

Scikit学习提供例如网格搜索或随机搜索,可以尝试所有/许多参数组合,并返回最佳组合。

因此,请在上面显示的代码之前执行GridSearchCV和RandomizedSearchCV。

https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.RandomizedSearchCV.html https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html

要获取有关该概念的更多信息:

https://scikit-learn.org/stable/modules/grid_search.html