Sklearn 线性回归示例

2025年3月17日 | 阅读 7 分钟

线性回归是一种基于监督学习的机器学习算法。它执行回归操作。回归使用自变量来训练模型并查找预测值,主要用于确定变量和预测值之间的关系。

回归模型根据所使用的自变量数量、因变量和自变量之间的关系以及其他因素而异。本教程将展示如何使用多个 Python 模块将线性回归应用于给定数据集。由于单个线性模型更容易可视化,我们将以它为例。在此演示中,模型将使用 sklearn 糖尿病数据集进行学习。

如何在 Sklearn 中使用线性回归?

Scikit-learn 是一个 Python 包,可简化使用各种机器学习 (ML) 方法来研究预测性数据,包括线性回归。

找到最适合一组散点数据的直线模型就是线性回归;然后,我们可以外推该曲线来预测新数据点。线性回归因其简单性和关键特性而成为一项重要的机器学习技术。

使用 Sklearn 的线性回归示例

代码

输出

Value of the coefficients: 
 [875.72247876]
Mean square error: 4254.602428877642
Coefficient of determination: 0.3276195356900222

Sklearn Linear Regression Example

使用交叉验证的 Sklearn 线性回归示例

许多机器学习模型在部分原始数据上进行训练,然后在互补的数据子集上进行评估。此过程称为交叉验证。为了识别过拟合或未能泛化模式,请使用交叉验证。

交叉验证涉及以下三个步骤

  • 将样本数据集的一部分预留出来。
  • 使用数据集的特定部分训练模型。
  • 使用数据集的预留部分验证模型。

通过交叉验证,我们使用原始训练数据集生成多个小的训练-测试分割。我们使用这些分割来训练我们的模型,该模型最能描述因变量和自变量之间的关系。对于标准的 k-fold 交叉验证测试,我们将原始数据集分成 k 个子集。在我们迭代地训练线性回归模型使用 k-1 个数据集后,我们使用剩余的数据集来验证模型。

这使我们能够在新数据集上验证模型,以了解模型是否描述了良好的关系。在本节中,我们将学习如何使用 sklearn 在线性回归模型上进行交叉验证测试。此外,我们将看到一种方法来提高 KFold 交叉验证方法提供的准确性。

代码

输出

Accuracy score of each fold:  [0.41676766 0.45263441 0.44526044 0.43015152 0.40605028 0.41904005]
Mean accuracy score:  0.4283173940888665

为了提高 KFold 交叉验证测试的准确性,我们可以使用分层 KFold 方法

代码

输出

Size of the dataset is:  442
Stratified k-fold Cross Validation Scores are:  [0.50117449 0.45486492 0.46935982 0.5599043  0.50545775 0.42289802]
Average Cross Validation score is:  0.48560988266624

使用 Python Sklearn 进行多元线性回归

多变量回归是一种监督机器学习方法,它使用多个自变量数据特征来分析目标特征。一个因变量和多个自变量构成了多变量回归,这是多元回归模型的扩展。我们尝试通过使用自变量训练模型来预测结果。

多变量回归使用一个公式来描述多个变量如何同时响应目标变量的变化。

数据预处理

大多数机器学习程序员认为,数据预处理是回归模型项目中最重要的阶段之一。可能存在过多的数据点、报告错误或许多其他问题,这些问题会阻止算法对数据集进行准确预测。

在将数据集输入机器学习模型之前,数据科学家会花费大量时间对其进行清理、归一化和缩放,以避免这种情况。

标准化函数,例如 MinMax 和 Standard 函数,是最常见的函数类型,用于执行特征缩放。这是因为您的数据中的特征范围不同。几乎所有机器学习方法都使用欧几里得距离来估计两个数据点之间的距离。

通过将集合中的每个点缩放到相同的范围,尺度标准化函数使算法能够准确计算距离。

我们必须首先同时导入 sklearn.preprocessing 和 numpy。

多元线性回归 Sklearn 示例

代码

输出

   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)  \
0                5.1               3.5                1.4               0.2   
1                4.9               3.0                1.4               0.2   
2                4.7               3.2                1.3               0.2   
3                4.6               3.1                1.5               0.2   
4                5.0               3.6                1.4               0.2   

   target  
0       0  
1       0  
2       0  
3       0  
4       0  
R-square score of the model:  0.9215461211058802
	Features	Coefficients
0	Intercept	0.279851
1	sepal width (cm)	-0.006845
2	petal length (cm)	0.297868
3	petal width (cm)	0.507009

下一个主题Python Timeit 模块