欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 机器学习/数据分析--通俗语言带你入门线性回归(结合案例)

机器学习/数据分析--通俗语言带你入门线性回归(结合案例)

2025/9/21 0:03:34 来源:https://blog.csdn.net/weixin_74085818/article/details/141303873  浏览:    关键词:机器学习/数据分析--通俗语言带你入门线性回归(结合案例)
  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊

前言

  • 机器学习是深度学习和数据分析的基础,接下来将更新常见的机器学习算法
  • 注意:在打数学建模比赛中,机器学习用的也很多,可以一起学习
  • 欢迎收藏 + 点赞 + 关注

文章目录

  • 1、基础概念简介
    • 1、什么是回归?
    • 2、什么是线性
    • 3、什么是线性回归?
    • 4、西瓜书中回归表达式
  • 2、一元线性回归
    • 1、表达式
    • 2、案例求解
      • 1、导入库
      • 2、数据预处理
      • 3、创建简单的线性回归模型
      • 4、预测结果
      • 5、误差分析
      • 6、模型展示
  • 3、多元线性回归
    • 1、表达式
    • 2、案例求解
      • 1、数据预处理
        • 1、导入数据集
        • 2、数据分析
        • 3、划分测试集和训练集
        • 4、数据标准化
      • 2、模型创建和训练
      • 3、模型预测
      • 4、误差计算
      • 5、结果图示

1、基础概念简介

1、什么是回归?

  • 回归的目的是预测,如我们高中学过的最小二乘回归,通过自变量(X)预测因变量(Y)。
  • 回归之所以能预测,是因为它通过大量的自变量(X)去拟合因变量(Y),寻找他们之间的线性关系。

2、什么是线性

  • 线性关系就是可以用一个线性方程来表示(通过一个或者多个变量来表示另外一个变量)
  • 如图一个最简单的一元线性回归:
  • 在这里插入图片描述

3、什么是线性回归?

一句话概括就是:通两个或者多个变量来预测结果

4、西瓜书中回归表达式

给定由d个属性描述的示例 x = ( x 1 ; x 2 ; … ; x d ) \boldsymbol{x}=(x_1;x_2;\ldots;x_d) x=(x1;x2;;xd) ,其中心是x在第i个属性上的取值,线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数,即

在这里插入图片描述

向量表达式为:

f ( x ) = w T x + b , ‾ \underline{f(\boldsymbol{x})=\boldsymbol{w}^\mathrm{T}\boldsymbol{x}+b ,} f(x)=wTx+b,

线性回归的求解就是解 w \boldsymbol{w} w 和 b参数

2、一元线性回归

1、表达式

f ( x ) = w x + b f(x)=wx+b f(x)=wx+b

  • w w w在高中学习中叫做斜率,b叫做截距,但是,在机器学习中 w w w叫做权重,b叫做偏置
  • 回归问题的求解就是求解 w \boldsymbol{w} w 和 b参数

2、案例求解

以一个成绩预测为例,步骤为:

  1. 导入库和数据
  2. 数据预处理
  3. 创建简单线性回归模型
  4. 预测结果
  5. 误差分析
  6. 模型展示

1、导入库

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt data = pd.read_csv("./studentscores.csv")
data
HoursScores
02.521
15.147
23.227
38.575
43.530
51.520
69.288
75.560
88.381
92.725
107.785
115.962
124.541
133.342
141.117
158.995
162.530
171.924
186.167
197.469
202.730
214.854
223.835
236.976
247.886
259.193
269.293
279.593

2、数据预处理

# 获取数据和数据划分
from sklearn.model_selection import train_test_splitx = data.iloc[:, :1].values   # data.iloc[:, 1] 与 data.iloc[:, :1] 的区别,前者返回一维数组,后者返回二维数组
y = data.iloc[:, 1].values x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, random_state=42)

3、创建简单的线性回归模型

from sklearn.linear_model import LinearRegressionmodel = LinearRegression()
model.fit(x_train, y_train)  # 模型拟合

4、预测结果

y_pred =  model.predict(x_test)
y_pred

结果:

array([29.72354202, 91.35223136, 83.64864519, 49.94545571, 27.79764548,47.0566109 , 22.01995585])

5、误差分析

from sklearn.metrics import mean_squared_error 
mse = mean_squared_error(y_test, y_pred)  # 计算均分误差,回归最常用的评价指标
print(mse)

结果:

19.327533697713523    

结合成绩数据,误差还可以,想要更直观,可以先对数据进行标准化

6、模型展示

from matplotlib import rcParams
# 设置字体为SimHei显示中文
rcParams['font.family'] = 'SimHei'# 创建画布
plt.figure(figsize=(12, 3))
# 创建子图
plt.subplot(1, 2, 1)
plt.scatter(x_train, y_train, color='red')
plt.plot(x_train, model.predict(x_train), label='训练集拟合', color='blue')
plt.title('训练集拟合')
# 创建子图
plt.subplot(1, 2, 2)
plt.scatter(x_test, y_test, color='red')
plt.plot(x_test, model.predict(x_test), label='测试集拟合', color='blue')
plt.title('测试集拟合')plt.show()

在这里插入图片描述

3、多元线性回归

1、表达式

在这里插入图片描述

  • 多元线性回归:影响Y的因素不唯一,有多个
  • 一元线性回归:影响Y的因素唯一,只有一个

2、案例求解

鸢尾花数据集,预测花瓣长度

  • 因变量Y:花瓣宽度
  • 自变量X:花萼长度,花萼宽度,花瓣长度

1、数据预处理

1、导入数据集
import numpy as np 
import pandas as pd # 网络下载 鸢尾花 数据集合
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
name = ['花萼-length', '花萼-widget', '花瓣-length', '花瓣-widget', 'class']data = pd.read_csv(url, names=name)
data
.dataframe tbody tr th {vertical-align: top;
}.dataframe thead th {text-align: right;
}
花萼-length花萼-widget花瓣-length花瓣-widgetclass
05.13.51.40.2Iris-setosa
14.93.01.40.2Iris-setosa
24.73.21.30.2Iris-setosa
34.63.11.50.2Iris-setosa
45.03.61.40.2Iris-setosa
..................
1456.73.05.22.3Iris-virginica
1466.32.55.01.9Iris-virginica
1476.53.05.22.0Iris-virginica
1486.23.45.42.3Iris-virginica
1495.93.05.11.8Iris-virginica

150 rows × 5 columns

2、数据分析
# 展示 不同 变量 对花瓣宽度的影响长度
import matplotlib.pyplot as plt plt.plot(data['花萼-length'], data['花瓣-widget'], 'x', label="marker='x'")
plt.plot(data['花萼-widget'], data['花瓣-widget'], 'o', label="marker='o'")
plt.plot(data['花瓣-length'], data['花瓣-widget'], 'v', label="marker='v'")plt.legend()
plt.show()


在这里插入图片描述

通过观察发现:没有聚类特征,各变量之间没有什么关系,没有什么规律可言

3、划分测试集和训练集
from sklearn.model_selection import train_test_splitX = data.iloc[:, :2].values
y = data.iloc[:, 3].values# 训练集:0.8,测试集:0.2
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) 
4、数据标准化
from sklearn.preprocessing import MinMaxScalerscaler = MinMaxScaler()
X_train_scaler = scaler.fit_transform(X_train)
X_test_sacler = scaler.transform(X_test)

2、模型创建和训练

from sklearn.linear_model import LinearRegressionmodel = LinearRegression()
model.fit(X_train_scaler, y_train)

3、模型预测

y_pred = model.predict(X_test_sacler)

4、误差计算

# 采用均方根误差计算
from sklearn.metrics import mean_squared_errormse = mean_squared_error(y_pred, y_test)
print("mse", mse)
mse 0.12290992506217009

5、结果图示

# 展示预测值和真实值分布
plt.scatter(y_test,y_pred, color='red')plt.xlabel("Prediction")
plt.ylabel("True");plt.show()


在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词