机器学习-线性回归分析


1.数据集

使用sklearn 中自带的波士顿房价数据集进行预测,对数据进行训练集与测试集的划分,训练集与测试集的比例为 7:3。

将训练集标准化后,使用 ElasticNet 函数进行拟合,对测试集进行预测,并对预测的结果进行评估。

最后对验证集样本的预测值和真实值进行画图比较。

同时,因为训练样本为随机选取,每次训练的结果不同,为了减少误差,进行五次训练,取平均值检验模型的优劣。

1.1 获取数据集

import pandas as pd
import numpy as np
from sklearn.datasets import load_boston
boston = load_boston()
X = boston.data
y =boston.target
print(X.shape)
print(y.shape)
(506, 13)
(506,)

1.2 划分数据集

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.7)

1.3 数据标准化

from sklearn import preprocessing
standard_X = preprocessing.StandardScaler()
X_train = standard_X.fit_transform(X_train)
X_test = standard_X.transform(X_test)
standard_y = preprocessing.StandardScaler()
y_train = standard_y.fit_transform(y_train.reshape(-1, 1))
y_test = standard_y.transform(y_test.reshape(-1, 1))

2. 运用 ElasticNet 回归模型训练和预测

from sklearn.linear_model import ElasticNet
ElasticNet_clf = ElasticNet(alpha=0.1, l1_ratio=0.71)
ElasticNet_clf.fit(X_train, y_train.ravel())
ElasticNet_clf_sorce = ElasticNet_clf.score(X_test, y_test.ravel())
print("lasso 模式得分:", ElasticNet_clf_sorce)
print("特征权重:")
print(ElasticNet_clf.coef_)
print("偏置值:", ElasticNet_clf.intercept_)
print("迭代次数:", ElasticNet_clf.n_iter_)
lasso 模式得分: 0.6263061571539503
特征权重:
[-0.01602952  0.         -0.          0.02917632 -0.          0.34096688
 -0.         -0.00854171 -0.         -0.0299037  -0.18516203  0.03440105
 -0.33360442]
偏置值: 6.277045769494396e-15
迭代次数: 18

3. 结果展示

import matplotlib.pyplot as plt
fig = plt.figure(figsize=(20, 3))
axes = fig.add_subplot(1, 1, 1)
line1, = axes.plot(range(len(y_test)), y_test, 'b', label='Actual_Value')
ElasticNet_clf_result = ElasticNet_clf.predict(X_test)
line2, = axes.plot(range(len(ElasticNet_clf_result)), ElasticNet_clf_result, 'r--', label='ElasticNet_Predict')
axes.grid()
fig.tight_layout()
plt.legend(handles=[line1, line2])
plt.title('ElasticNet')
plt.show()

png


文章作者: 易安
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 易安 !
评论
  目录