sklearn 线性回归_sklearn 线性回归

这篇博客介绍了如何使用sklearn库进行线性回归,包括数据集的导入、数据预处理、模型训练、评估与可视化。重点强调了数据集质量对预测效果的影响,并列举了评估模型的多种指标。
摘要由CSDN通过智能技术生成

sklearn 线性回归

数据集导入,以及模型的建立,和线性回归的应用。

本次所使用的包

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score,mean_absolute_error
from sklearn.preprocessing import StandardScaler
%matplotlib inline
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus']=False

模型参数

# 线性回归是比较简单的模型,没有调参,默认即可。线性回归的性能取决于数据本身,而不是调参能力,因此,线性模型的优化只能通过处理数据进行优化。
# sklearn linear_model linearRegression
# sklearn.linear_model.LinearRegression - scikit-learn 0.23.2 documentation
# 参数:class sklearn.linear_model.LinearRegression(*, fit_intercept=True, normalize=False, copy_X=True, n_jobs=None)

# fit_intercept:是否计算此模型的截距,默认启用,如果设置为false,则在计算中将不使用截距。
# normalize:和fit_intercept联动,如果fit_intercept 设置为False,则忽略此参数,如果fit_intercept 设置为True,则对x进行归一化,如果要进行标准化,则设置normalize=False,并调用StandardScaler
# copy_X 默认为True,复制x,如果设置为False,则就是为X。
# n_jobs 设置为-1,用所有的处理器。
# 方法:fit,get_params,predict,score,set_params

使用步骤

1.导入数据集,线性回归对数据集要求很高,预测效果怎么样,可以说完全取决于数据集的质量

diabetes_X,diabetes_y=datasets.load_diabetes(return_X_y=True)
diabetes_X=diabetes_X[:,np.newaxis,2]

2.划分数据集,为训练集和测试集

diabetes_X_train=diabetes_X[:-20]
diabetes_X_test=diabetes_X[-20:]
# 划分标签为训练集和数据集
diabetes_y_train=diabetes_y[:-20]
diabetes_y_test=diabetes_y[-20:]

如果数据没有标准化,则对数据进行标准化处理

sc=StandardScaler()
diabetes_X_train_std=sc.fit_transform(diabetes_X_train)
diabetes_X_test_std=sc.transform(diabetes_X_test)

3.初始化模型

regr=linear_model.LinearRegression()

4.训练模型

regr.fit(diabetes_X_train,diabetes_y_train)

5.使用测试集测试模型

diabetes_y_pred=regr.predict(diabetes_X_test)

6.系数

regr.coef_

7 使用mse,emse,mae,r2评估模型

# 均方误差 MSE
print('MSE',mean_squared_error(diabetes_y_test,diabetes_y_pred))

# RMSE 绝对均方误差 数值越小,模型拟合度越高
print('RMSE',np.sqrt(metrics.mean_squared_error(diabetes_y_test,diabetes_y_pred)))

# MAE
print('MAE',mean_absolute_error(diabetes_y_test,diabetes_y_pred))

# 确定系数,1是完美的预测
print('r2',r2_score(diabetes_y_test,diabetes_y_pred))

# r2偏低,mse偏高:说明和预测值差距比较大,

8. 可视化

plt.scatter(diabetes_X_test, diabetes_y_test,  color='black')
plt.plot(diabetes_X_test, diabetes_y_pred, color='blue', linewidth=3)

plt.xticks(())
plt.yticks(())

plt.show()

0c831a4629698fed8b2e7fe70a021d71.png

折线图

plt.figure(figsize=(15,5))
plt.plot(range(len(diabetes_y_test)), diabetes_y_test, 'r', label='测试数据')
plt.plot(range(len(diabetes_y_test)), diabetes_y_pred, 'b', label='预测数据')
plt.legend()

bc7621b2332e39045b3c62abd56513a8.png
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值