失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 机器学习训练建模 集成模型 模型评估等代码总结(.05.21更新)

机器学习训练建模 集成模型 模型评估等代码总结(.05.21更新)

时间:2023-11-25 16:34:20

相关推荐

机器学习训练建模 集成模型 模型评估等代码总结(.05.21更新)

这篇博客总结一些有关机器学习的模型代码与评价指标,力求一针见血,复制粘贴即可食用,hhhhhh,不定期更新

代码中使用的案例是pandas构造的dataframe型的数据,变量名为dataframe,最终的模型结果交result_model,它差不多长这么样子,也就是通过前面的这么多项特征预测 mask,当然,mask不一定都是0/1,只是以此为例:

目录

1建模前夜

1.1 数据处理

1.1.1 一般性数据预处理

1.1.2 标准化

1.1.3 归一化

1.1.4切分训练集、测试集

1.2 模型核心概念概述

1.2.1 分类与回归

2 机器学习建模

2.1常规模型建模

2.1.1 Logistic regression (逻辑回归)

2.1.2 Support Vector Machine(支持向量机)

2.1.3 Random Forest(随机森林)

2.1.4 K-Nearest Neighbor (K近邻)

2.1.5 Naive Bayes Classifier (朴素贝叶斯分离器)

2.1.6 Decision tree (决策树)

2.1.7 Multi-Layer Perceptron(多层感知器)

2.1.8 Gradient Boosting Decision Tree(梯度提升决策树)

2.2 集成模型

2.2.1 Voting 模型(多模型投票机制)

2.2.2 Bagging 模型

2.2.3 AdaBoost 模型(自适应增强模型)

3 结果的评估

3.1分类器模型评估指标

3.1.1 Accuracy score(准确率)

3.1.2Precisionscore(精确率、查准率)

3.1.3Recall score(召回率)

3.1.4 Roc-Aucscore (AUC值)

3.1.5 Receiver operating characteristic curve (ROC曲线)

3.1.6Area under Curve(AUC曲线)

3.1.7交叉验证

3.1.8 混淆矩阵

3.2回归模型评价指标

3.2.1 Mean Squared Error(MSE)均方误差

3.2.2Root Mean Squard Error(RMSE) 均方根误差

3.2.3 Mean Absolute Error(MAE)平均绝对误差

3.2.4 R-Square (R^2)决定系数

3.2.5 Adjusted R-Square修正R^2

4 参数评估

4.1训练集各维度权重评估

参考链接(感谢)

1建模前夜

1.1 数据处理

1.1.1 一般性数据预处理

出门左转:/weixin_35757704/article/details/89280715

1.1.2 标准化

这一步是为了便于模型训练,使数值矩阵每一列的均值都为0,方差为1

from sklearn.preprocessing import StandardScalerstdsc = StandardScaler()#将训练集都标准化x_train = stdsc.fit_transform(x_train) y_train = stdsc.fit_transform(y_train)

注意:x_train 与 y_train 中不能有非数值类型的值

1.1.3 归一化

将所有特征压缩在 [ 0 , 1 ] 这个区间上

from sklearn.preprocessing import MinMaxScalermms= MinMaxScaler()#将训练集归一化x_train = mms.fit_transform(x_train) y_train = mms.fit_transform(y_train)

1.1.4切分训练集、测试集

首先得到 已知特征 x 与 结果 y

x = dataframe.drop('mask',axis=1)y = dataframe['mask']

然后切分训练集与测试集:

from sklearn.model_selection import train_test_splitx_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3)

按照3-7开,70% 的训练数据,30%的测试数据

random_state :随机种子

1.2 模型核心概念概述

1.2.1 分类与回归

这是新手特别容易混淆的:

简单区分:

分类:回忆小时候我们看剧的时候看到结局,我们就能区分这个是好人,这个是坏人;最后能明显贴标签的就是分类。

回归:今天狂风暴雨,那么明天的气温应该是多少呢?最后预测结果是一个区间值(标签化不明显)的就是回归

注意:Logistic回归的模型 并不是回归,而是分类

如果觉得这部分博主瞎讲,那么恭喜你答对了,请期待博主之后从数学的角度写的博客哟~~

2 机器学习建模

2.1常规模型建模

这样的模型解决回归问题的类是xxxRegression,解决分类问题的类是xxxClassifier

2.1.1 Logistic regression (逻辑回归)

from sklearn.linear_model import LogisticRegressionlog_model = LogisticRegression()log_model.fit(x_train,y_train)

2.1.2 Support Vector Machine(支持向量机)

from sklearn import svmsvm_model = svm.SVC(kernel='rbf',C=1,gamma=0.1)# svm_model = svm.SVC(kernel='linear',C=0.1,gamma=0.1)svm_model.fit(x_train,y_train)

SVC参数:

kernel:"rbf" , "linear"

2.1.3 Random Forest(随机森林)

from sklearn.ensemble import RandomForestClassifierrf_model = RandomForestClassifier(n_estimators=10)rf_model.fit(x_train,y_train)

参数:

n_estimators = 10:树的数量

2.1.4 K-Nearest Neighbor (K近邻)

from sklearn.neighbors import KNeighborsClassifierknn_model = KNeighborsClassifier()knn_model.fit(x_train,y_train)

KNeighborsClassifier参数:

n_neighbours=5 : k值(近邻参考值)

2.1.5 Naive Bayes Classifier (朴素贝叶斯分离器)

from sklearn.naive_bayes import GaussianNBgnb_model = GaussianNB()gnb_model.fit(x_train,y_train)

2.1.6 Decision tree (决策树)

from sklearn.tree import DecisionTreeClassifierdecision_tree_model = DecisionTreeClassifier(max_depth=10)decision_tree_model.fit(x_train,y_train)

DecisionTreeClassifier参数:

max_depth:最大深度

2.1.7 Multi-Layer Perceptron(多层感知器)

from sklearn.neural_network import MLPClassifiermlp_model = MLPClassifier()mlp_model.fit(x_train,y_train)

2.1.8 Gradient Boosting Decision Tree(梯度提升决策树)

from sklearn.ensemble import GradientBoostingClassifiergbc = GradientBoostingClassifier()gbc.fit(x_train,y_train)

它与随机森林类似,也有比如n_estimators这样的参数,可以根据情况配置,效果一般情况下比随机森林好一点

2.2 集成模型

2.2.1 Voting 模型(多模型投票机制)

像是多个模型举手表决一样进行预测,这个模型的准确率波动实在让人印象深刻。

from sklearn.ensemble import VotingClassifiervotion_model = VotingClassifier(estimators=[('模型名称1',result_model1),('模型名称2',result_model2),])votion_model.fit(x_train,y_train)

2.2.2 Bagging 模型

一个分类器(bag_model)并行构造多个模型(base_estimator)

from sklearn.ensemble import BaggingClassifierbag_model = BaggingClassifier(base_estimator=result_model,n_estimators=100)bag_model.fit(x_train,y_train)

BaggingClassifier参数:

base_estimator:默认决策树,指定需要并行构造的那一个模型

random_state:随机种子

n_estimators:并行构造的数量

2.2.3 AdaBoost 模型(自适应增强模型)

from sklearn.ensemble import AdaBoostClassifierada_cf = AdaBoostClassifier(base_estimator=result_model,n_estimators=100,learning_rate=0.1)result = cross_val_score(ada_cf,x,y,cv=10,scoring='accuracy')

AdaBoostClassifier参数:

base_estimator:默认决策树,指定需要并行构造的那一个模型

random_state:随机种子

n_estimators:并行构造的数量

learning_rate:学习率

3 结果的评估

假设训练出来的模型变量名叫 result_model,预测的结果是result_prediction,真实的结果是y_test

3.1分类器模型评估指标

根据上方的图可以更加形象的看各个指标的含义

3.1.1 Accuracy score(准确率)

准确率 = 预测对的样本数/ 全部样本数

from sklearn.metrics import accuracy_scoreresult_prediction = result_model.predict(x_test)# 参数为 (真实值,预测值)score = accuracy_score(y_test,result_prediction)print(score) # 得到预测结果区间[0,1]

3.1.2Precisionscore(精确率、查准率)

精确率 =被预测出的正例样本数/预测为正例的样本数

它表示预测为正例的样本中有多少真的是正例。

from sklearn.metrics import precision_scoreresult_prediction = result_model.predict(x_test)# 参数为 (真实值,预测值)score = precision_score(y_test,result_prediction)print(score) # 得到预测结果区间[0,1]

3.1.3Recall score(召回率)

召回率 =预测且真的是正例的样本数 /正例的样本数

它表示样本中的正例有多少被准确预测了。

from sklearn.metrics import recall_scoreresult_prediction = result_model.predict(x_test)# 参数为 (真实值,预测值)score = recall_score(y_test,result_prediction)print(score) # 得到预测结果区间[0,1]

3.1.4 Roc-Aucscore (AUC值)

这个函数的计算也是AUC的值

from sklearn.metrics import roc_auc_scoreresult_prediction = result_model.predict(x_test)# 参数为 (真实值,预测值)score = roc_auc_score(y_test,result_prediction)print(score) # 得到预测结果区间[0,1]

3.1.5 Receiver operating characteristic curve (ROC曲线)

请参考这篇博客:/abcjennifer/article/details/7359370

3.1.6Area under Curve(AUC曲线)

请参考这篇博客:/u013385925/article/details/80385873

3.1.7交叉验证

可以得到一个模型的平均精度

from sklearn.model_selection import KFoldfrom sklearn.model_selection import cross_val_scorefrom sklearn.model_selection import cross_val_predictkfold = KFold(n_splits=10,random_state=0)# x 为所有数据中用来预测的特征;y为所有数据中需要预测的结果列cv_cross = cross_val_score(result_model,x,y,cv=kfold,scoring="accuracy")print(cv_cross.mean()) # 交叉验证均值print(cv_cross.std()) # 交叉验证标准差

KFold参数:

n_splits:交叉验证将数据集平均切分的份数

3.1.8 混淆矩阵

from sklearn.metrics import confusion_matrixconfusion_matrix(y_test,result_prediction)

混淆矩阵会生成n*n的混淆矩阵,主对角线是预测对的值,左侧为真实值,上边是预测值。混淆矩阵可以初步看出分类器的问题。

3.2回归模型评价指标

3.2.1 Mean Squared Error(MSE)均方误差

from sklearn.metrics import mean_squared_errorprint(mean_squared_error(y_test,result_prediction))

3.2.2Root Mean Squard Error(RMSE) 均方根误差

import numpy as npfrom sklearn.metrics import mean_squared_errorprint(np.sqrt(mean_squared_error(y_test,result_prediction)))

均方根误差就是均方误差开根号:

3.2.3 Mean Absolute Error(MAE)平均绝对误差

from sklearn.metrics import mean_absolute_errorprint(mean_absolute_error(y_test,result_prediction))

相当于求预测值与真实值的差值的绝对值,累加后求平均

3.2.4 R-Square (R^2)决定系数

from sklearn.metrics import r2_scoreprint(r2_score(y_test,result_prediction))

取值范围为 [0,1] ,越接近1,模型效果越好,越接近0,效果越差;但是随着预测数据量的增加会增加降低R2值,因此只能大致评估模型,建议使用3.2.5中的校正决定系数进行评估。

3.2.5 Adjusted R-Square修正R^2

from sklearn.metrics import r2_scoredef ad_r2(y_test,result_prediction,train_df):p = train_df.shape[0] # 特征数量n = train_df.shape[1] # 样本数量return (1-((1-r2_score(y_test,result_prediction))*(n-1))/(n-p-1))# x_train 是Dataframe格式的训练样本adr = ad_r2(y_test,result_prediction,x_train)print(adr)

取值范围为 [0,1] ,越接近1,模型效果越好,越接近0,效果越差。可以定量比较不同模型的效果。

4 参数评估

4.1训练集各维度权重评估

result_model.feature_importances_

参考链接(感谢)

Minitab 18 支持:/zh-cn/minitab/18/

分类与回归的区别是什么:/question/21329754

机器学习:准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线:/quiet_girl/article/details/70830796

sklearn.metrics中的评估方法介绍(accuracy_score, recall_score, roc_curve, roc_auc_score, confusion_matrix):/CherDW/article/details/55813071

AUC,ROC我看到的最透彻的讲解:/u013385925/article/details/80385873

ROC曲线-阈值评价标准:/abcjennifer/article/details/7359370

机器学习评估指标:/p/36305931

回归评价指标:MSE、RMSE、MAE、R2、Adjusted R2:/u012735708/article/details/84337262

如果觉得《机器学习训练建模 集成模型 模型评估等代码总结(.05.21更新)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。