机器学习篇——线性回归基础

引言

       线性回归是机器学习中最基础且广泛应用的算法之一。无论是初学者还是资深数据科学家,线性回归都是必须掌握的核心工具。它不仅在统计学中有着悠久的历史,还在现代数据科学中扮演着重要角色。本文将带你从理论到实践,全面了解线性回归,并通过代码实现一个简单的线性回归模型。

什么是线性回归?

      线性回归是一种用于建模因变量(目标变量)与一个或多个自变量(特征)之间线性关系的统计方法。其基本形式可以表示为:

线性回归的目标是通过最小化误差项,找到最佳的回归系数 β,使得模型能够最好地拟合数据。

线性回归的假设

线性回归模型的有效性依赖于以下几个假设:

  1. 线性关系:因变量与自变量之间存在线性关系。

  2. 独立性:误差项之间相互独立,即不存在自相关。

  3. 同方差性:误差项的方差是常数,即不存在异方差性。

  4. 正态性:误差项服从正态分布。

如果这些假设不成立,线性回归模型的效果可能会大打折扣。

线性回归的类型

线性回归可以分为两种主要类型:

  1. 简单线性回归:只有一个自变量和一个因变量。

  2. 多元线性回归:有多个自变量和一个因变量。

线性回归的代码实现

下面我们通过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代码实现了一个简单的线性回归模型。希望本文能帮助你更好地理解线性回归,并为你在实际项目中的应用提供参考。