【机器学习】回归的原理学习与葡萄酒数据集的最小二乘法线性回归实例

news2024/11/26 21:51:34

文章目录

  • 一,回归
    • 1.1回归分析的基本概念
    • 1.2线性回归
    • 1.3最小二乘法
    • 1.4一元(简单)线性回归模型
      • 1.4.1随机误差项(线性回归模型)的假定条件
      • 1.4.2参数的普通最小二乘估计(0LS)
    • 1.5葡萄酒数据集的最小二乘法线性回归实例

一,回归

1.1回归分析的基本概念

回归分析(regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法

  • 确定变量之间是否存在相关关系,若存在,则找出数学表达式
  • 根据一个或几个变量的值,预测或控制另一个或几个变量的值,且估计这种控制或预测可以达到何种精确度。

1.2线性回归

线性回归:线性模型就是对输入特征加权求和,再加上一个我们称为偏置项(也称为截距项)的常数,以此进行预测。

image-20221107194530501

image-20221107194539014

image-20221107194726046

1.3最小二乘法

最小二乘法是一种在误差估计、不确定度、系统辨识及预测、预报等数据处理诸多学科领域得到广泛应用的数学工具。

最小二乘法是解决曲线拟合问题最常用的方法。其基本思路是:令

image-20221107200816313

现在问题就转化为求J。的最小值问题。
具体的做法是:
1)对目标函数求导

2)零其导数为0,求得极值如果函数是凸函数,极值点就是最值点。这即是著名方法一最小二乘的基本思想。

image-20221107201019234

image-20221107201035716

1.4一元(简单)线性回归模型

建立两个变量之间的数学模型:

image-20221107195253166

Y表示销售价格,称作被解释变量,X表示房屋面积,称作解释变量,image-20221107195354195image-20221107195401434为回归系数(待估参数),u为随机误差项(也称随机扰动项)。

上式只含一个解释变量,变量间的关系是线性的,称为一元线性回归模型(简单线性回归模型)

image-20221107195135852

简单线性回归模型引入随机误差项,主要有以下几方面的原因:

1)作为未知影响因素的代表;

2)作为无法取得数据的己知因素的代表;

3)作为众多细小影响因素的综合代表;

4)模型的设定误差;

5)变量的观测误差;

6)经济现象的内在随机性。

1.4.1随机误差项(线性回归模型)的假定条件

image-20221107195550283

1.4.2参数的普通最小二乘估计(0LS)

image-20221107195911002

为求总体参数image-20221107201234371的估计值image-20221107201242838,使用普通最小二乘法。

普通最小二乘法(Ordinary least squares,.OLS)给出的判断标准是:拟合直线的残差平方和达到最小。

image-20221107201142468

image-20221107200334568

image-20221107201620112

称为OLS估计量的离差形式(deviation form)。

由于参数的估计结果是通过最小二乘法得到的,故称为普通最小二乘估计量(ordinary leastsquares estimators)。

1.5葡萄酒数据集的最小二乘法线性回归实例

1.导入葡萄酒数据集

from sklearn.datasets import load_wine
wine = load_wine()
X = wine.data
y = wine.target

2.使用最小二乘法线性回归:

from sklearn import linear_model
linear = linear_model.LinearRegression()

3.对其进行预测:

import numpy as np
linear.fit(X[:,:1],y)
y_predicted = np.dot(X[:,:1],linear.coef_)+linear.intercept_

4.将预测值和,原本的值进行输出,和原本值减去预测值得到结果如下:

print("y",y_predicted)
print("mean(y)",np.mean(y))
print("mean(y')",np.mean(y_predicted))
print("Y-Y'",np.sum(y-y_predicted))

输出如下:

image-20221107204041192

  1. 对13个特征进行俩俩组合,并且不重复:
linear = linear_model.LinearRegression()
x_list = []
for j in range(0, 13):
    for i in range(j+1, 13):

6.输出13个特征进行俩俩组合的预测得分最大值:

        if j != i:
            print(j, i)
            x_local = X[:, [j, i]]
            linear.fit(x_local, y)
            print("score", linear.score(x_local, y))
            x_list.append(linear.score(x_local, y))
            print(linear.coef_)
            print(linear.intercept_)

print(x_list)
print("最大值为", max(x_list))

结果如下:

image-20221108111121697

  1. 切分数据集:测试集 30%:
wine_X_train, wine_X_test, wine_y_train, wine_y_test = train_test_split(X, y, test_size=0.1*i, random_state=0)

8.线性回归进行训练得分:

from sklearn import linear_model
model = linear_model.LinearRegression()
model.fit(wine_X_train,wine_y_train)
train_score.append(model.score(wine_X_train,wine_y_train)*100)
test_score.append(model.score(wine_X_test,wine_y_test)*100)
print("train:",model.score(wine_X_train,wine_y_train))
print("test:",model.score(wine_X_test,wine_y_test))

9.画图,可视化观察

plt.plot(x,train_score,label="Train")
plt.plot(x,test_score,label="Test")
plt.legend(loc='best')
plt.show()

输出如下:

train_score: [91.03676416293968, 91.9071553176753, 91.54585590997156, 92.66522947292925, 94.11247607913444, 93.75429953765662, 94.77044261319818, 94.48210580122965]
test_score: [75.18096058648021, 76.43759153956302, 84.36193575843113, 83.54234051618413, 81.22672208926059, 83.80201986070868, 82.0291448284772, 79.66827225108624]

结果如下:

image-20221108111329543

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/4169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端一面经典vue面试题总结

一般在哪个生命周期请求异步数据 我们可以在钩子函数 created、beforeMount、mounted 中进行调用,因为在这三个钩子函数中,data 已经创建,可以将服务端端返回的数据进行赋值。 ​ 推荐在 created 钩子函数中调用异步请求,因为在…

受激拉曼散射计量【Stimulated-Raman-Scattering Metrology】(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑…

单元测试的时候读不到resources.test中配置

背景 接手了几个老工程&#xff0c;跑单元测试的时候&#xff0c;发现数据库的配置总是走了dev环境&#xff0c; 原因是工程中分环境进行了db的配置 历史经验 指定本地环境 ActiveProfiles(“test”) 没有生效 解决 在pom文件中 新加如下配置 <build><!--单元测…

Java—类加载机制

类加载机制 我们多次提到了类加载器ClassLoader&#xff0c;本章就来详细讨论Java中的类加载机制与ClassLoader。 类加载器ClassLoader就是加载其他类的类&#xff0c;它负责将字节码文件加载到内存&#xff0c;创建Class对象。与之前介绍的反射、注解和动态代理一样&#xf…

奶制品数据可视化,去年全国奶制品产量高达3778万吨,同比增长7.1%

奶制品是生活中很常见的一种补充人体所需维生素和矿物质元素的重要食品&#xff0c;在生活中奶制品也是很常见的&#xff0c;食用最多的是牛奶。牛奶中含有非常丰富的钙质&#xff0c;睡前适当给孩子食用&#xff0c;可以补充孩子所需的钙质从而达到长高的效果。 很多小伙伴经常…

C++ 类和对象以及内存管理 练习错题总结

作者&#xff1a;小萌新 专栏&#xff1a;C初阶作业 简介&#xff1a;大二学生 希望能和大家一起进步 本篇博客介绍&#xff1a;对于我们上一周学的知识做一个总结 查缺补漏 C 类和对象以及内存管理练习类和对象 (上)拷贝构造函数类和对象&#xff08;中&#xff09;重载函数运…

MySQL 主从复制与读写分离

一 概念 什么是读写分离 读写分离&#xff0c;基本的原理是让主数据库处理事务性增、改、删操作( INSERT、UPDATE、DELETE) &#xff0c;而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 为什么要读写分离 因为数据库的“写…

刷题笔记之九(查找输入整数二进制中1的个数+完全数计算+杨辉三角的变形+计算某字符出现次数)

目录 1. 聚合查询是进行行与行的运算合并&#xff0c;是不能和别的列放在一块查询 2. PHP数据库查询语句 3. 有group by时先执行where&#xff0c;后执行having 4. join常用两张表内连接和外连接&#xff0c;用一张表可以自连接 5. 删除数据用delete&#xff0c;删除表时…

python基于PHP+MySQL汽车展览会系统

随着我国交通事业的发展,汽车已经逐渐的成为了人们主要的代步工具之一,但是如何从众多品牌和型号的车海中选择最适合自己的那款车是很多购车人士一直以来关系的问题。为了方便车主更好的选择自己的车辆很多汽车经销商会不定期的举办一些车展来展销自己的车辆,同时也给购车用户提…

2022 “行业寒冬”,给在座的测试人一些涨薪建议

10 月 24 日&#xff0c;Python 官方发布了最新的 3.11 版本&#xff0c;新的版本速度提升2倍&#xff0c;以弥补与其他编程语言在速度上的缺陷。可以预见Python语言在未来的应用范围会越来越广。 会Python语言能细分出许多从业方向&#xff0c;其中随着互联网的发展&#xff…

Python_Numpy库的ndarray对象的属性有哪些?如何获取它们的值?

Python_Numpy库的ndarray对象的属性有哪些?如何获取它们的值? Python_Numpy库的ndarray对象的常用属性有如下这些&#xff1a; ndim—矩阵的维度&#xff1b; shape—矩阵的形状&#xff1b; size—矩阵的元素个数&#xff1b; dtype—矩阵元素的数据类型&#xff1b; T-矩阵…

【Transformers】第 1 章 :Hello Transformers

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

Stream流总结

前言 在Java中&#xff0c;涉及到对数组、Collecction等集合类中的元素进行操作的时候&#xff0c;通常会通过循环的方式进行逐个处理&#xff0c;或者使用Stream流的方式进行处理 例子 从给定句子中返回单词长度大于5的单词列表&#xff0c;按长度倒序输出&#xff0c;最多返…

算法入门 | 分治策略

目录 分治策略 1.分治法可以解决的问题特征 2.分治法解题步骤 3.分治法编程举例 递归求阶乘 求斐波那契数列 小练习&#xff1a;给出一个数n&#xff0c;打印其每一位 分治策略 1.分治法可以解决的问题特征 &#xff08;1&#xff09;问题规模缩小到一定程度就可以轻易…

什么是HTML?

关于每篇博文的浪漫主义 【4k】镰仓的灰色与青 | irkyar | sonya74【【4k】镰仓的灰色与青 | irkyar | sonya74】 https://www.bilibili.com/video/BV14G411A7eX/?share_sourcecopy_web&vd_source385ba0043075be7c24c4aeb4aaa73352 网页 1.1什么是网页 网站是指在因特网…

重磅干货:多维度深入总结MySQL锁机制

一. 前言 有过面试经历的小伙伴都知道&#xff0c;现在面试Java开发工作&#xff0c;数据库几乎是你绕不过去的一道坎。就以文哥班上的学员为例&#xff0c;几乎每个学员的每场面试都会被问到数据库的问题。文哥很用心地给大家总结了一下&#xff0c;数据库基本都是从以下几个…

基于变化点 copula 优化算法中的贝叶斯研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑…

基础IO(下)——Linux

文章目录1. 理解文件系统1.2 背景知识1.2 inode vs 文件名1.3 软硬链接2. 动态库和静态库2.1 静态库.a2.1.1 如果想写一个库&#xff1f;&#xff08;编写库的人的角度&#xff09;2.1.2如果我把库给别人&#xff0c;别人怎么用呢&#xff1f;&#xff08;使用库的人的角度&…

Nature子刊:用于阿尔茨海默病痴呆评估的多模态深度学习模型

在全球范围内&#xff0c;每年有近1000万新发痴呆病例&#xff0c;其中阿尔茨海默病&#xff08;AD&#xff09;最为常见。需要新的措施来改善对各种病因导致认知障碍的个体的诊断。作者报告了一个深度学习框架&#xff0c;该框架以连续方式完成多个诊断步骤&#xff0c;以识别…

随机森林可视化

今天看到别人的文章&#xff0c;说到了随机森林可视化&#xff0c;于是尝试了下。 window安装 windows版本安装: 1.在下面去下载window的exe安装包&#xff0c;安装graphviz。 http://www.graphviz.org/download/ 在路径选项&#xff0c;点击add path to computer&#xff0c…