文章目录
- 一、sklearn-线性回归介绍
- 二、线性回归
- 1.一元线性回归
- 2.多元线性回归模型
- 3.最小二乘法
- 三、一元线性回归应用
- 1.导入库
- 2.绘制散点图
- 3.建立回归模型并进行训练
- 4.模型评估与数据查看
- 5.模型测试
- 四、多元线性回归应用
- 1.导入库
- 2.计算相关性
- 3.数据预处理
- 4.训练评估模型
- 5.模型预测
- 6.输出模型参数
- 五、总结
一、sklearn-线性回归介绍
sklearn(Scikit-learn)是Python中用于机器学习的一个非常流行的库,它提供了大量的算法和工具来构建和评估模型。线性回归是统计学中用于预测一个或多个自变量(特征)和一个因变量(目标)之间线性关系的方法。回归是一种应用广泛的预测建模技术,这种技术的核心在于预测的结果是连续型变量。在sklearn中,线性回归可以通过LinearRegression类来实现。
二、线性回归
1.一元线性回归
一元线性回归模型是统计学中用于预测一个因变量(通常表示为y)和一个自变量(通常表示为x)之间线性关系的模型。这种模型可以表示为数学方程:
y
=
β
0
+
β
1
x
+
ϵ
y=β 0 +β 1 x+ϵ
y=β0+β1x+ϵ
其中:
- y 是因变量(目标变量),是我们想要预测的。
- x 是自变量(特征),是我们用来预测y的。
- β0 是截距项(intercept),也称为常数项或y轴上的截点。
- β1 是斜率(slope),表示x每增加一个单位时,y平均增加(或减少,如果β1是负数)的单位数。
- ε 是误差项(error term),表示除线性因素外随机因素所产生的误差。
2.多元线性回归模型
多元线性回归模型(Multiple Linear Regression Model),它包含两个或更多个自变量以及一个因变量。
多元线性回归模型可以表示为以下数学方程:
y
=
β
0
+
β
1
x
1
+
β
2
x
2
+
⋯
+
β
n
x
n
+
ϵ
y=β 0 +β 1 x 1 +β 2 x 2 +⋯+β n x n +ϵ
y=β0+β1x1+β2x2+⋯+βnxn+ϵ
其中:
- y 是因变量(目标变量)。
- x_1, x_2, …, x_n 是自变量(特征),n 表示自变量的数量。
- β_0, β_1, β_2, …, β_n 是模型的参数,其中 β_0 是截距项,β_1 到 β_n 是各自变量的系数。
- ε 是误差项,表示除线性因素外随机因素所产生的误差。
3.最小二乘法
- 最小二乘法就是通过最小化真实值和预测值之间的RSS来求解参数的方法。
目标函数:
求导结果:
偏导为0:
三、一元线性回归应用
一元线性回归是统计学和数学中用于分析两个变量之间线性关系的重要方法,其中一个变量(自变量)的变化对另一个变量(因变量)产生线性影响。这种方法广泛应用于多个领域,以下是一元线性回归的在预测广告投入与营销的应用。
1.导入库
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
data = pd.read_csv("data.csv")
- pandas:用于数据处理和分析。
- matplotlib.pyplot:用于绘制图形,这里主要用于绘制散点图来直观展示“广告投入”与“销售额”之间的关系。
- sklearn.linear_model.LinearRegression:从sklearn库中导入线性回归模型,用于拟合和预测数据。
- 使用pandas的read_csv函数读取名为"data.csv"的CSV文件,该文件应包含两列数据:‘广告投入’和’销售额’。
2.绘制散点图
plt.scatter(data.广告投入, data.销售额)
plt.show()
- 使用matplotlib.pyplot的scatter函数绘制“广告投入”与“销售额”之间的散点图,以便直观地观察它们之间的关系。
图例:
3.建立回归模型并进行训练
corr = data.corr()
lr = LinearRegression()
x = data[['广告投入']]
y = data[['销售额']]
lr.fit(x, y)
- 初始化LinearRegression对象lr。
- 使用fit方法来训练模型,即让模型学习“广告投入”与“销售额”之间的线性关系。
4.模型评估与数据查看
"""score指R2"""
result = lr.predict(x)
score = lr.score(x, y)
a = round(lr.intercept_[0], 2)
b = round(lr.coef_[0][0], 2)
print("线性回归模型为: y = {}x + {}".format(b, a))
- 计算模型的R²分数,即决定系数,用来评估模型的好坏。R²分数的值越接近1,说明模型的拟合效果越好。
- 查看模型的截距和斜率,并将它们四舍五入到小数点后两位。
最终输出该回归模型为: y = 3.74x + -36.36
5.模型测试
predict = lr.predict([[40], [45], [50]])
print(predict)
- 对模型进行新的测试,输入新数据,并进行输出
输出结果为:
[[113.15418502]
[131.84361233]
[150.53303965]]
四、多元线性回归应用
多元线性回归是一种重要的统计分析方法,用于研究多个自变量与一个因变量之间的线性关系。通过建立一个包含多个自变量的线性方程来预测或解释因变量的变化。多元线性回归的应用非常广泛,这里我们简单介绍银行贷款的案例来解释。
1.导入库
import pandas as pd
from sklearn.linear_model import LinearRegression
data = pd.read_excel("案例.xlsx")
- pandas 用于数据处理和分析。
- 从sklearn库中导入线性回归模型。
- 读取名为“案例.xlsx”的Excel文件
2.计算相关性
corr = data[['不良贷款', '各项贷款余额', '本年累计应收贷款', '贷款项目个数', '本年固定资产投资额']].corr()
- 从data中选取’不良贷款’, ‘各项贷款余额’, ‘本年累计应收贷款’, ‘贷款项目个数’,
'本年固定资产投资额’这五个字段,并计算它们之间的相关系数矩阵corr。了解变量之间的线性相关程度。
3.数据预处理
lr_model = LinearRegression()
x = data[['不良贷款', '各项贷款余额', '本年累计应收贷款', '贷款项目个数']]
y = data[['本年固定资产投资额']]
- 将’不良贷款’, ‘各项贷款余额’, ‘本年累计应收贷款’, '贷款项目个数’作为特征(自变量)x。
- 将’本年固定资产投资额’作为目标(因变量)y。
4.训练评估模型
lr_model.fit(x, y)
score = lr_model.score(x, y)
print(score)
- 通过fit方法对模型进行训练
- 计算模型的决定系数(也称为R²分数),以评估模型的好坏。R²分数的值越接近1,说明模型的预测能力越强。最终结果为:0.6972425448090671
5.模型预测
print(lr_model.predict([[0.1, 200, 30, 10]]))
print(lr_model.predict([[0.5, 150, 1.1, 8], [10, 30, 20, 3]]))
- 对新的数据点进行预测。
最终输出结果:
[[113.46732744]]
[[ 79.37075222]
[-30.5681806 ]]
6.输出模型参数
a = lr_model.coef_
b = lr_model.intercept_
print("线性回归模型为:y = {:.2f}x1 + {:.2f}x2 + {:.2f}".format(a[0][0], a[0][1], b[0]))
-打印线性回归模型的系数coef_和截距intercept_。
最终结果为:y = -5.41x1 + 0.47x2 + 1.49
五、总结
线性回归模型易于理解和解释,模型的参数(系数和截距)直接反映了自变量对因变量的影响。但是预测能力有限,比如不能预测比较复杂的数据。