回归模型构建
模块 | 函数 | 算法名称 | 简称 |
---|---|---|---|
linear_model | LinearRegression | 线性回归 | LR |
svm | SVR | 支持向量机回归 | SVM |
neighbors | KNeighborsRegressor | 最近邻回归 | KNN |
tree | DecisionTreeRegressor | 回归决策树 | DT |
ensemble | RandomForestRegressor | 随机森林回归 | RF |
ensemble | GradientBoostingRegressor | 梯度提升回归树 | GBDT |
以SVM为例,咱简单过一遍模型构建的大致流程。
from sklearn.datasets import load_diabetes # 导入糖尿病数据
from sklearn.model_selection import train_test_split # 数据集划分
from sklearn.preprocessing import StandardScaler # 标准差标准化
from sklearn.svm import SVR # 导入SVR库
# 导出所需的数据
diabetes = load_diabetes()
X = diabetes['data']
y = diabetes['target']
# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.8, random_state = 123)
# 数据标准化
Standard = StandardScaler().fit(X_train) # 训练规则
x_train = Standard.transform(X_train) # 应用规则
x_test = Standard.transform(X_test) # 应用规则
# 开始构建
svr = SVR().fit(x_train, y_train) # 训练模型
y_pred = svr.predict(x_test) # 预测标签
数据标准化的目的,是消除量纲差异。因为量纲差异会导致涉及距离计算和梯度下降的模型出现异常,例如某些特征重要性非常大,而某些特征则变得不那么重要。
至此,模型就构建完毕了。当然,很多时候我们还需要对构建的模型进行评价。
回归模型评价
方法名称 | 最优值 | sklearn函数 |
---|---|---|
平均绝对误差 | 0.0 | metrics. mean_absolute_error |
均方误差 | 0.0 | metrics. mean_squared_error |
中值绝对误差 | 0.0 | metrics. median_absolute_error |
可解释方差值 | 1.0 | metrics. explained_variance_score |
R方值,确定系数 | 1.0 | metrics. r2_score |
所有回归模型评价函数的参数均为两个:
-
真实值,即在划分时划分的测试集标签
-
预测值,通过模型预测所得出的结果
一般情况下,单一一个回归模型无法说明回归模型好坏,需要多个回归模型进行比较。
from sklearn import metrics
metrics.mean_absolute_error(y_test, y_pred)
60.62483115202473
metrics.mean_squared_error(y_test,y_pred)
5160.5160.043822698072
metrics.median_absolute_error(y_test,y_pred)
56.12912460415339
metrics.explained_variance_score(y_test,y_pred)
0.20385710303138893
metrics.r2_score(y_test,y_pred)
0.18096718824416846
由这里我们也可以看出,不同的评价方法也会得出不同的模型优劣。
所以,要想构建一个好的模型,首先得确定一或多个适合的模型算法,之后进行交叉验证等手段验证,还得运用恰当的评价方法进行客观评价。甚至即便如此,我们也还不能肯定地说:得到的模型,就是一个十全十美的最好的模型。
下课。