SDU项目实训记录4.2——其他模型(7.22)

SDU项目实训记录4.2——其他模型

完成分配工作后,研究了一下同小组partner负责的部分,找到了以下三种适合的模型

一、RandomForestClassifier模型(随机森林)

优点:随机性高,适用性广
缺点:效果可解释性差

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
clf = RandomForestClassifier(n_estimators=100)
params = {
    'n_estimators':range(1,200)
}
cv = GridSearchCV(clf,param_grid= params ,verbose = 1,n_jobs=-1, scoring='roc_auc')
cv.fit(train_X, train_y)
rfc= cv.best_estimator_
cv.best_score_

OUT:0.7406656860482378

二、GradientBoostingClassifier 模型

优点:优化后结果较好,且可解释性较强
缺点:适用性可解释性差

from  sklearn.ensemble  import  GradientBoostingClassifier
clf = GradientBoostingClassifier(
loss='deviance',  ##损失函数默认deviance  deviance具有概率输出的分类的偏差
n_estimators=100, ##默认100 回归树个数 弱学习器个数
learning_rate=0.1,  ##默认0.1学习速率/步长0.0-1.0的超参数  每个树学习前一个树的残差的步长
max_depth=3,   ## 默认值为3每个回归树的深度  控制树的大小 也可用叶节点的数量max leaf nodes控制
subsample=1,  ##树生成时对样本采样 选择子样本<1.0导致方差的减少和偏差的增加
min_samples_split=2, ##生成子节点所需的最小样本数 如果是浮点数代表是百分比
min_samples_leaf=1, ##叶节点所需的最小样本数  如果是浮点数代表是百分比
max_features=None, ##在寻找最佳分割点要考虑的特征数量auto全选/sqrt开方/log2对数/None全选/int自定义几个/float百分比
max_leaf_nodes=None, ##叶节点的数量 None不限数量
min_impurity_split=1e-7, ##停止分裂叶子节点的阈值
verbose=0,  ##打印输出 大于1打印每棵树的进度和性能
warm_start=False, ##True在前面基础上增量训练(重设参数减少训练次数) False默认擦除重新训练
random_state=0  ##随机种子-方便重现
)  ##多类别回归建议使用随机森林
params = {
    'n_estimators':range(1,200)
}
cv = GridSearchCV(clf,param_grid= params ,verbose = 1,n_jobs=-1, scoring='roc_auc')
cv.fit(train_X, train_y)
gbc= cv.best_estimator_
cv.best_score_

OUT:0.7624008038357515

三、AdaBoostClassifier模型

优点:随机性高,适用性广,可解释性强,且效果好
缺点:算法较为复杂

from sklearn.ensemble import  AdaBoostClassifier
from sklearn.model_selection import GridSearchCV
clf= AdaBoostClassifier()
params = {
    'n_estimators':range(1,200)
}
cv = GridSearchCV(clf,param_grid= params ,verbose = 1,n_jobs=-1, scoring='roc_auc')
cv.fit(train_X, train_y)
abc= cv.best_estimator_
cv.best_score_

OUT:0.7610013009463877

上一篇:机器学习之决策树的原理及sklearn实现


下一篇:shell习题-判断函数