python学习——线性回归

python学习——线性回归

一、线性回归简介

1、线性回归应用场景

房价预测、销售额度预测、贷款额度预测

2、什么是线性回归

线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式

特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归

img

img

2.1 单变量线性回归

一种可能的表达方式为:ℎ𝜃 (𝑥) = 𝜃0 + 𝜃1𝑥,因为只含有一个输入变量,因此这样的问题叫作单变量线性回归问题

  • ℎ 代表 代表学习算法的解决方案或函数,也称为hypothesis(假设),ℎ表示一个函数,也是模型,例如输入是房屋尺寸大小,输出是房屋的价格
  • 𝑚 代表训练集中实例的数量
  • 𝑥 代表特征/输入变量
  • 𝑦 代表目标变量/输出变量
  • (𝑥, 𝑦) 代表训练集中的实例
  • (x{(i)},y{(i)})代表第𝑖 个观察实例
2.2 多变量线性回归
多维特征

仍以房价模型为例,对模型增加更多的特征,例如房间的数量,楼层数和房屋的年龄等,构成一个含有多变量的模型,模型中的特征为(x1,x2,…,xn), 增添更多特征后,我们引入新的注释:

  • n 代表特征的数量
  • x^{(i)}代表第i个训练实例,表示特征矩阵中的第i行,是一个向量,比如说,上图的
  • x^{(2)}=\begin{pmatrix} 1416\ 3\ 2\ 40\ 232 \end{pmatrix}
  • x_{j}^{(i)}代表特征矩阵中第 𝑖 行的第 𝑗 个特征,也就是第 𝑖 个训练实例的第 𝑗 个特征

这个时候的假设函数也就相应变成了: h_{\theta }(x)=\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2}+...+\theta _{n}x_{n}

这个公式中有n+1个参数和n个变量,为了能够使公式简化一些,引入x_{0}=1,则公式转化为:h_{\theta }(x)=\theta _{0}x_{0}+\theta _{1}x_{1}+\theta _{2}x_{2}+...+\theta _{n}x_{n}

此时该模型中的参数和变量都是n+1维的向量,可以写成如下的形式:

\theta =\begin{pmatrix} \theta _{0}\ \theta _{1}\ \theta _{2}\ ...\ \theta _{n} \end{pmatrix},X=\begin{pmatrix} x_{0}\ x_{1}\ x_{2}\ ...\ x_{n} \end{pmatrix},所以h_{\theta }(x)=\theta ^{T}X,其中上标T代表矩阵的转置

特征和多项式回归

线性回归并不适用于所有的数据,有时我们需要曲线来适应我们的数据,比如是一个二次方模型,或一个三次方模型,通常我们需要先观察数据然后再决定准备尝试怎样的模型

注:如果我们采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要 (下面)

3、线性回归步骤

  1. 假设目标值(因变量y)与特征值(自变量x)之间线性关系(即满足一个多元一次方程,如:f(x)=w1x1+…+wnxn+b.)
  2. 构建损失函数(下面)
  3. 通过损失函数的最小值,最后确定参数(最重要的一步)

4、线性回归的特征与目标的分析关系

线性回归当中主要有两种模型,一种是线性关系,另一种是非线性关系(如多变量回归中多项式)

5、优缺点

5.1优点
  1. 运算速度快:由于算法很简单,而且符合非常简洁的数学原理,不管是建模速度,还是预测速度都
    是非常快的
  2. 可解释性强:由于最终我们可以得到一个函数公式,根据计算出的公式系数就可以很明确地知道每
    个变量的影响大小
  3. 对线性关系拟合效果好:当然,相比之下,如果数据是非线性关系,那么就不合适了
  • 6
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Python中制作散点图和进行线性回归,你可以使用matplotlib和sklearn库。以下是一种实现方法: 首先,导入所需的库: import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression 然后,准备数据并绘制散点图: x = np.array([2, 5, 8, 8, 13, 15, 17, 19, 21, 24]) y = np.array([12, 31, 45, 52, 79, 85, 115, 119, 135, 145]) plt.scatter(x, y) plt.xlabel("battery") plt.ylabel("KM") plt.title("散点图") plt.show() 接下来,建立线性回归模型并进行拟合: regressor = LinearRegression() regressor.fit(np.reshape(x, (-1, 1)), np.reshape(y, (-1, 1))) 打印拟合结果(参数): print("斜率:", regressor.coef_) print("截距:", regressor.intercept_) 最后,画出数据和拟合直线的图: plt.scatter(x, y) plt.plot(np.reshape(x, (-1, 1)), regressor.predict(np.reshape(x, (-1, 1)))) plt.xlabel("battery") plt.ylabel("KM") plt.title("拟合结果") plt.show() 这样,你就可以在Python中绘制散点图和进行线性回归了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [python 编程 线性回归,散点图,拟合结果](https://blog.csdn.net/qq_42262610/article/details/124290573)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python机器学习——线性回归案例(一)](https://blog.csdn.net/lucky_shi/article/details/105186572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值