引言
线性回归是机器学习中最基础且广泛应用的算法之一。无论是初学者还是资深数据科学家,线性回归都是必须掌握的核心工具。它不仅在统计学中有着悠久的历史,还在现代数据科学中扮演着重要角色。本文将带你从理论到实践,全面了解线性回归,并通过代码实现一个简单的线性回归模型。
什么是线性回归?
线性回归是一种用于建模因变量(目标变量)与一个或多个自变量(特征)之间线性关系的统计方法。其基本形式可以表示为:
线性回归的目标是通过最小化误差项,找到最佳的回归系数 β,使得模型能够最好地拟合数据。
线性回归的假设
线性回归模型的有效性依赖于以下几个假设:
-
线性关系:因变量与自变量之间存在线性关系。
-
独立性:误差项之间相互独立,即不存在自相关。
-
同方差性:误差项的方差是常数,即不存在异方差性。
-
正态性:误差项服从正态分布。
如果这些假设不成立,线性回归模型的效果可能会大打折扣。
线性回归的类型
线性回归可以分为两种主要类型:
-
简单线性回归:只有一个自变量和一个因变量。
-
多元线性回归:有多个自变量和一个因变量。
线性回归的代码实现
下面我们通过Python代码来实现一个简单的线性回归模型。我们将使用scikit-learn
库来构建和训练模型,来实现一个关于糖尿病风险的预测案例:
1、首先,我们导入相关的库
import pandas as pd
from sklearn.linear_model import LinearRegression
2、随后,我们读取数据
data=pd.read_csv('糖尿病数据.csv',encoding='gbk',engine='python')
print(type(data))
3、对数据的特征之间进行相关性分析
corr=data[['age','sex','bmi','bp','s1','s2','s3','s4','s5','s6','target']].corr()
4、建立模型,并训练
lr=LinearRegression()
x=data[['age','sex','bmi','bp','s1','s2','s3','s4','s5','s6']]
y=data[['target']]
lr.fit(x,y)
5、对模型检验精确度,并测试
score =lr.score(x,y)
print(score)
print(lr.predict(data.iloc[ : , : -1]))
6、获取参数,并得到最有的直线
a=lr.coef_
b=lr.intercept_
print("线性回归模型为:y={:.2f}x1 + {:.2f}x2 +{:.2f}x3 + {:.2f}x4 +{:.2f}x5 + {:.2f}x6 +{:.2f}x7 + {:.2f}x8 +{:.2f}x9 + {:.2f}x10+ {:.2f}."
.format(a[0][0],a[0][1],a[0][2],a[0][3],a[0][4],a[0][5],a[0][6],a[0][7],a[0][8],a[0][9],b[0]))
运行结果如下:
完整代码如下:
import pandas as pd
from sklearn.linear_model import LinearRegression
data=pd.read_csv('糖尿病数据.csv',encoding='gbk',engine='python')
print(type(data))
#age,sex,bmi,bp,s1,s2,s3,s4,s5,s6,target
corr=data[['age','sex','bmi','bp','s1','s2','s3','s4','s5','s6','target']].corr()
lr=LinearRegression()
x=data[['age','sex','bmi','bp','s1','s2','s3','s4','s5','s6']]
y=data[['target']]
lr.fit(x,y)
score =lr.score(x,y)
print(score)
# print(lr.predict([[0.0380759064334241,0.0506801187398187,0.0616962065186885,0.0218723549949558,-0.0442234984244464,-0.0348207628376986,-0.0434008456520269,-0.00259226199818282,0.0199084208763183,-0.0176461251598052],
# [0.0417084448844436,0.0506801187398187,-0.0320734439089499,-0.0228849640236156,-0.0497273098572509,-0.0401442866881206,0.0302319104297145,-0.0394933828740919,-0.126097385560409,0.0154907301588724]
# ]))
print(lr.predict(data.iloc[ : , : -1]))
a=lr.coef_
b=lr.intercept_
print("线性回归模型为:y={:.2f}x1 + {:.2f}x2 +{:.2f}x3 + {:.2f}x4 +{:.2f}x5 + {:.2f}x6 +{:.2f}x7 + {:.2f}x8 +{:.2f}x9 + {:.2f}x10+ {:.2f}."
.format(a[0][0],a[0][1],a[0][2],a[0][3],a[0][4],a[0][5],a[0][6],a[0][7],a[0][8],a[0][9],b[0]))
总结
线性回归是机器学习中最基础且重要的算法之一。通过本文,我们了解了线性回归的基本理论、假设、类型以及求解方法,并通过Python代码实现了一个简单的线性回归模型。希望本文能帮助你更好地理解线性回归,并为你在实际项目中的应用提供参考。