Python机器学习-线性模型

共 7955字,需浏览 16分钟

 ·

2024-04-11 10:43

3bf9c35f912a60116b3af03ce5d7825b.webp

4c34848e88a0ab73d3aae940bdd8cff8.webp


Scikit-Learn 已经为我们设计好了线性模型(sklearn.linear_model),在程序中直接调用即可,无需编写过多代码就可以轻松实现线性回归分析,首先了解一下线性回归分析。线性回归是利用数理统计中的回归分析,来确定两种或两种以上变量间,相互依赖的定量关系的一种统计分析与预测的方法,应用十分广泛。在线性回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果线性回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。在Python 中,无需理会烦琐的线性回归求解数学过程,直接使用Scikit-Learn 中的linear_model模块就可以实现线性回归分析。linear_model 模块中提供了很多线性模型,包括最小二乘法回归、岭回归、Lasso、贝叶斯回归等。本节主要介绍最小二乘法回归和岭回归。首先导入linear_model 模块,程序代码如下:

from sklearn import linear_model

导入linear_model 模块后,在程序中就可以使用相关函数实现线性回归分析。

1、最小二乘法回归

线性回归是数据挖掘中的基础算法之一,线性回归的思想其实就是解一组方程,得到回归系数。不过在出现误差项之后,方程的解法就存在了改变,一般使用最小二乘法进行计算,所谓“二乘”就是平方的意思,最小二乘法也称为最小平方和,其目的是通过最小化误差的平方和,使得预测值与真值无限接近。linear_model 模块中的LinearRegression 函数用于实现最小二乘法回归。LinearRegression 函数拟合一个带有回归系数的线性模型,使得真实数据和预测数据(估计值)之间的残差平方和最小,与真实数据无限接近。

LinearRegression 函数的语法如下:

linear_model.LinearRegression(fit_intercept=True,normalize=False,copy_X=True,n_jobs=None)

参数说明:

 fit_intercept:布尔型值,是否需要计算截距,默认值为True。

 normalize:布尔型值,是否需要标准化,默认值为False,和参数fit_intercept有关。当fit_intercept参数值为False 时,将忽略该参数;当fit_intercept 参数值为True 时,则回归前,对回归量X 进行归一化处理,取均值相减,再除以L2 范数(L2 范数是指向量各元素的平方和,然后开方)。

 copy_X :布尔型值,选择是否复制X 数据,默认值True,如果为False,则覆盖X 数据。

 n_jobs:整型,代表CPU 工作效率的核数,默认值1,-1 表示跟CPU 的核数一致。

主要属性:

  coef_:数组或形状,表示线性回归分析的回归系数。

  intercept_:数组,表示截距。

主要方法:

  fit(X,y,sample_weight=None):拟合线性模型。

  predict(X):使用线性模型返回预测数据。

  score(X,y,sample_weight=None):返回预测的确定系数R^2。LinearRegression 函数调用fit 方法来拟合数组X、y,并且将线性模型的回归系数存储在其成员变量的coef_ 属性中。

快速示例01  智能预测房价

实现智能预测房价,假设某地的房屋面积和价格关系如图2 所示,下面使用LinearRegression 函数预测面积为170 平方米的房屋的单价。

65c521799b2dde8684b02a27a3a77f11.webp

图2  房屋价格表

程序代码如下:

                    
                      from sklearn import linear_model
                    
                    
                      
                        
import numpy as np
x=np.array([[1,56],[2,104],[3,156],[4,200],[5,250],[6,300]])
y=np.array([7800,9000,9200,10000,11000,12000])
clf = linear_model.LinearRegression()
clf.fit (x,y) #拟合线性模型
k=clf.coef_ #回归系数
b=clf.intercept_ #截距
x0=np.array([[7,170]])
#通过给定的x0预测y0,y0=截距+X值*回归系数
y0=clf.predict(x0) #预测值
print('回归系数:',k)
print('截距:',b)
print('预测值:',y0)

运行程序,输出结果为:

回归系数: [1853.37423313 -21.7791411 ]

截距:7215.950920245397

预测值: [16487.11656442]

2、岭回归

岭回归是在最小二乘法回归的基础上,加入了对表示回归系数的L2 范数约束。岭回归是缩减法的一种,相当于对回归系数的大小施加了限制。岭回归主要使用linear_model 模块的Ridge 函数实现,语法如下: linear_model.Ridge(alpha=1.0,fit_intercept=True,normalize=False,copy_X=True,max_iter=None,tol=0.001,solver='auto',random_state=None)

参数说明:

   alpha:权重。

   fit_intercept:布尔型值,是否需要计算截距,默认值为True。

   normalize:输入的样本特征归一化,默认值为False。

   copy_X :复制或者重写。

   max_iter:最大迭代次数。

   tol:浮点型,控制求解的精度。

   solver:求解器,其值包括auto、svd、cholesky、sparse_cg和lsqr,默认值为auto。

主要属性:

  coef_:数组或形状,表示线性回归分析的回归系数。

主要方法:

  fit(X,y):拟合线性模型。

   predict(X):使用线性模型返回预测数据。

   Ridge 函数使用fit 方法将线性模型的回归系数存储在其成员变量的coef_ 属性中。

快速示例02  使用岭回归函数实现智能预测房价

使用岭回归函数Ridge 实现智能预测房价,程序代码如下:

                    
                      from sklearn.linear_model import Ridge
                    
                    
                      
                        
import numpy as np
x=np.array([[1,56],[2,104],[3,156],[4,200],[5,250],[6,300]])
y=np.array([7800,9000,9200,10000,11000,12000])
clf = Ridge(alpha=1.0)
clf.fit(x, y)
k=clf.coef_ #回归系数
b=clf.intercept_ #截距
x0=np.array([[7,170]])
#通过给定的x0预测y0,y0=截距+X值*斜率
y0=clf.predict(x0) #预测值
print('回归系数:',k)
print('截距:',b)
print('预测值:',y0)

运行程序,输出结果为:

回归系数: [10.00932795 16.11613094]

截距:6935.001421210872

预测值: [9744.80897725]


ed1a223ed8143d7f50bb67ac36c1a52d.webp

浏览 15
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报