本文将介绍以下四点内容:
(1)三种回归模型:线性回归、随机森林(输出决策树图)、梯度提升回归;
(2)使用GridSearch对机器学习模型进行参数调优;
(3)自动机器学习包:TPOT;
(4)回归模型的评估:评估指标+残差图。
2020研究生数学建模比赛已经收尾,我们组选择的是B题,预测汽油辛烷值损失的建模。一般来讲,对分类变量进行预测使用分类器,对连续变量进行预测使用回归。本文为整理的建模中所用的回归模型,欢迎交流,指出不足。
1 三种回归模型
本部分要介绍的三种模型都是用于回归的模型,这里变量已经经过了筛选,特征工程已经结束,主要作为数模所使用的方法的整理汇总。其中线性回归原理比较简单,随机森林和梯度提升回归都是基于树的决策,随机森林是多棵树,相对于
1.1 线性回归
线性回归的原理比较简单,不多说,直接上代码。
#载入包
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split #用户划分训练集和测试集
from sklearn.linear_model import LinearRegression #线性回归包
from sklearn import metrics #模型评估包
from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error
#以下为后续绘图用包
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
#数据读取
data= pd.read_csv("D:/course/other/shumo_code_2020/data/data_for_q3.csv")
del data["index"]
#训练集和测试集的划分
data_train, data_test= train_test_split(data,test_size=0.3, random_state=0) #参数test_size表示测试集的比例
train_y = data_train.RON_loss
columns = data_train.columns.tolist()
train_X = data_train.drop(["RON_loss"],axis = 1)
test_X = data_test.drop(["RON_loss"],axis = 1)
test_y = data_test.RON_loss
#构建模型
model = LinearRegression()
model = model.fit(train_X, train_y)
#模型应用:进行值的预测,训练集和测试集都要预测是为了评估模型的能力以及有没有过拟合的问题,关于模型评估请见第四部分
#预测训练集的Y值
train_y_predict = model.predict(train_X)
#预测测试集的Y值
predicted_values = model.predict(test_X)