机器学习——线性回归

这篇具有很好参考价值的文章主要介绍了机器学习——线性回归。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

机器学习——线性回归

基于Python实现线性回归、预测和建模评估。

1 模型设定

以Boston数据集为例,其中MEDV是标签,其余均为特征变量

  • CRIM per capita crime rate by town
  • ZN proportion of residential land zoned for lots over 25,000 sq.ft.
  • INDUS proportion of non-retail business acres per town
  • CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)
  • NOX nitric oxides concentration (parts per 10 million)
  • RM average number of rooms per dwelling
  • AGE proportion of owner-occupied units built prior to 1940
  • DIS weighted distances to five Boston employment centres
  • RAD index of accessibility to radial highways
  • TAX full-value property-tax rate per $10,000
  • PTRATIO pupil-teacher ratio by town
  • B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town
  • LSTAT % lower status of the population
  • MEDV Median value of owner-occupied homes in $1000’s

为实现对MEDV的预测,构建如下线性回归模型
M E D V = a 0 + a 1 C R I M + a 2 Z N + ⋯ + a 13 L S T A T + u MEDV = a_0+a_1CRIM +a_2ZN +\dots+ a_{13}LSTAT+u MEDV=a0+a1CRIM+a2ZN++a13LSTAT+u
其中 u u u为扰动项。与计量经济学相区别,这里无需对 u u u的特征做出假定。


2 训练模型

import statsmodels.api as sm
import statsmodels.formula.api as smf
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

data = pd.read_csv('boston.csv')
# 标签
y = data['MEDV']
# 特征变量
x = data.iloc[0:506, 0:13]
# 训练集、测试集分割
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=0)
# 基于训练集线性回归
model = LinearRegression()
model.fit(X_train, y_train)
# 回归系数
print(f'回归系数\n{model.coef_}\n')

# [-1.21310401e-01  4.44664254e-02  1.13416945e-02  2.51124642e+00
#  -1.62312529e+01  3.85906801e+00 -9.98516565e-03 -1.50026956e+00
#   2.42143466e-01 -1.10716124e-02 -1.01775264e+00  6.81446545e-03
#  -4.86738066e-01]

3 模型预测

# 基于测试集进行预测
pred = model.predict(X_test)

4 交叉验证

通常选择10折或5折交叉验证,评估模型的预测能力。当均方误差MSE越小表明预测效果越强。对全样本使用交叉验证:

from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import LeaveOneOut
from sklearn.model_selection import RepeatedKFold
kfold = KFold(n_splits=10, shuffle=True, random_state=1)
scores_mse = -cross_val_score(model, x, y, cv=kfold, scoring='neg_mean_squared_error')
print('每次交叉差验证的回归损失:', scores_mse)
print('十折交叉验证MSE期望:', scores_mse.mean())
#每次鞅差验证的回归损失: [20.54427466 24.47650033  9.49619045 48.63290854 12.11906454 #18.14673907 17.53359386 38.67822303 34.22829546 13.73556966]
#折交叉验证MSE期望: 23.759135960073124

为保守起见,重复进行十折交叉验证,重复次数为M,共得到10M个MSE。

rkfold = RepeatedKFold(n_splits=10, n_repeats=10, random_state=1234567)
scores_mse = -cross_val_score(model, x, y, cv=rkfold, scoring='neg_mean_squared_error')
print('重复10次的10折交叉验证均值:\n',scores_mse.mean())
# 重复10次的10折交叉验证均值:\n 23.719695852306927
# 均方误差损失分布直方图
sns.histplot(pd.DataFrame(scores_mse), color='green',kde=True)
plt.xlabel('MSE')
plt.title('10-fold CV Repeated 10 Times')
plt.grid()

机器学习——线性回归

如果样本量较小,可使用留一法 LeaveOneOut

loo = LeaveOneOut()
scores_mse = -cross_val_score(model, x, y, cv=loo, scoring='neg_mean_squared_error')
print('留一法MSE期望:\n',scores_mse.mean() )
#留一法MSE期望:23.725745519476153

-END-

陈强,《机器学习及Python应用》高等教育出版社, 2021年3月文章来源地址https://www.toymoban.com/news/detail-445159.html

到了这里,关于机器学习——线性回归的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习——线性回归、梯度下降

    监督学习 :学习数据带有标签 无监督学习 :没有任何的标签,或者有相同的标签 其他:强化学习、推荐系统等 还是房价预测的例子, 训练集如下: 定义各个变量的含义如下: m——代表训练集中实例的数量 x——代表特征/输入变量 y——代表目标变量/输出变量 (x,y)——代

    2024年02月07日
    浏览(50)
  • 【机器学习】线性回归模型详解

    PS:本文有一定阅读门槛,如果有不明白的地方欢迎评论询问! 接下来我们将要学习我们的第一个模型——线性回归。比如说我需要根据数据预测某个面积的房子可以卖多少钱 接下来我们会用到以下符号: m:训练样本数量 x:输入值,又称为属性值 y:输出值,是我们需要的结果

    2024年02月03日
    浏览(62)
  • 【机器学习】线性回归(超详细)

    上一篇: 机器学习是什么? https://mp.csdn.net/mp_blog/creation/editor/122619296   目录 2.单变量线性回归 2.1 模型表示 2.2 代价函数 2.2.1 代价函数的直观理解I 2.2.2 代价函数的直观理解II 2.3 梯度下降 2.3.1 梯度下降的直观理解 2.3.2 梯度下降的线性回归 3.线性代数的回顾 3.1矩阵和向量 3

    2024年02月09日
    浏览(35)
  • 【机器学习】单变量线性回归

    机器学习:从数据中学习,而不依赖于规则下编程的一种算法 Goal: (min_{w,b}(J(w, b))) - 提供一种衡量一组特定参数与训练数据拟合程度的方法 right answer x - y label categories Regression Classification structure || pattern categories Clustering Anomaly detection 异常检测 Dimensionality reduction 降维 预测数

    2024年02月15日
    浏览(34)
  • 机器学习——线性回归

    基于Python实现线性回归、预测和建模评估。 1 模型设定 以Boston数据集为例,其中MEDV是标签,其余均为特征变量 CRIM per capita crime rate by town ZN proportion of residential land zoned for lots over 25,000 sq.ft. INDUS proportion of non-retail business acres per town CHAS Charles River dummy variable (= 1 if tract bounds

    2024年02月04日
    浏览(40)
  • 【机器学习300问】11、多元线性回归模型和一元线性回归有什么不同?

            在之前的文章中,我们已经学习了一元线性回归模型,其中最关键的参数是w和b。机器学习的目的就是去得到合适w和b后能准确预测未知数据。但现实世界是复杂的,一个事情的发生绝大多数时候不会是一个原因导致。         因此多元线性回归模型区别与一元线

    2024年01月22日
    浏览(46)
  • 【机器学习】十大算法之一 “线性回归”

      作者主页: 爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主 爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域. https://blog.csdn.net/Code_and516?type=blog 个人简介:打工人。 持续分

    2024年02月09日
    浏览(39)
  • 机器学习10—多元线性回归模型

    在市场的经济活动中,经常会遇到某一市场现象的发展和变化取决于几个影响因素的情况,也就是一个因变量和几个自变量有依存关系的情况。而且有时几个影响因素主次难以区分,或者有的因素虽属次要,但也不能略去其作用。例如,某一商品的销售量既与人口的增长变化

    2023年04月24日
    浏览(48)
  • [机器学习西瓜书]3.线性回归

    介于看完之后老是不知道看了些啥,所以开这么一部分blog对看到的内容进行记录整理 当然知识介绍肯定没有书上写的详细,仅限于自己对内容的整理 试图学习一个通过属性的线性组合来进行预测的函数 这里学到的主要内容 线性回归——最小二乘法 局部加权线性回归 对数几

    2023年04月26日
    浏览(38)
  • 机器学习&&深度学习——线性回归的基本元素

    回归用来表示输入输出之间的关系。 用实际例子来解释一下线性回归:根据房屋的面积、房龄来估算房屋价格。为了实现这个预测放假的模型,需要收集一个真实的数据集,该数据集包括了房屋的销售价格、面积和房龄。 在机器学习中,这个数据集称为 训练集(training set)

    2024年02月15日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包