美文网首页
Dummies的线性回归

Dummies的线性回归

作者: Darren老师 | 来源:发表于2022-09-23 15:44 被阅读0次

如果您正在开始您的数据科学或机器学习之旅,线性回归可能是您可能正在学习的第一个机器学习算法或统计模型。它可能是机器学习和统计学中最简单和最著名的算法之一。在这里,我们将直观地探索简单的线性回归及其关键思想以及伪代码和 python 实现。

在开始线性回归或任何类型的回归之前,了解回归建模的概念至关重要。在统计领域,回归建模是一种用于制定 因变量和一组自变量之间的数学关系的方法。例如,您想估计某些人的体重,这受他们的饮食、身高和运动习惯的影响。这里,权重是因变量(结果),其余三个是自变量(预测变量)

线性回归是一种统计算法吗?

机器学习的目标,更具体地说是预测建模,是通过在略读可解释性的同时做出最佳预测来最小化错误。在应用机器学习中,我们利用来自各个领域(主要是统计数据)的算法来实现这些目的。因此,线性回归起源于统计学领域,目的是为了理解输入和输出数值变量之间的关系,但工程学已将其借用于机器学习。因此,除了是一种统计算法之外,它还是一种机器学习算法。现在,让我们了解它的全部内容。

定义线性回归

线性回归是一种强大的监督机器学习算法,它假设因变量和自变量之间存在线性关系。它只是寻找最佳拟合线的处理器,它最准确地解释了依赖特征和独立特征之间的可变性。让我们假设线性回归是一台自动售货机,它接受一个输入变量(预测变量)x并返回一个输出变量(结果)y。如果只有一个输入变量或特征,我们称之为简单线性回归,如果有多个输入变量,我们称之为多元线性回归。有许多方程式可以表示一条直线,但我们将坚持使用以下方程式:

这里 βo 是 y 截距,β1 是斜率。让我们尝试借助图表来理解它。

在上图中:

  • x 轴绘制我们的自变量x,y 轴绘制我们的因变量y
  • 数据点(实际值)在这里用灰点表示
  • βo 是 10 的截距,β1 是 x 变量的斜率。
  • 根据我们的模型,蓝线是最佳拟合线,对应于预测值
  • 误差或残差衡量数据点与回归线的距离,即它只是与我们的模型的偏差

正如我们从理论中知道的那样,线性回归方程包含两个系数,即βo 是截距,β1 是斜率。为了得到最佳拟合线,我们必须计算这些系数,下面会提到这个算法。

简单线性回归的伪代码

1. Start

2. Read Number of Data (n)

3. For i=1 to n:
     Read Xi and Yi
   Next i

4. Initialize:
     sumX = 0
     sumX2 = 0
     sumY = 0
     sumXY = 0

5. Calculate Required Sum
   For i=1 to n:
     sumX = sumX + Xi
     sumX2 = sumX2 + Xi * Xi
     sumY = sumY + Yi
     sumXY = sumXY + Xi * Yi
   Next i

6. Calculate Required Constant a and b of y = a + bx:
   b = (n * sumXY - sumX * sumY)/(n*sumX2 - sumX * sumX)
   a = (sumY - b*sumX)/n

7. Stop

使用 Python 实践线性回归算法

了解了理论之后,让我们学习如何在实践中使用 python 来做到这一点。Python 的优势在于我们不必从头开始实现流行的机器学习算法。从机器学习到数据可视化,都有 Python 库,拥有非常活跃的开发者社区。我们将使用 Scikit Learn 库来开发我们的线性回归模型。

SciKit 学习库的一个重要功能是它包含玩具数据集,使新用户在解决更复杂的问题之前可以轻松练习。我们将使用糖尿病数据集来演示线性回归模型。

第 1 步:导入库

我们将从导入相关库开始,其中一些非常重要的是:

  • NumPy(执行某些数学运算)
  • pandas(将数据存储在 pandas DataFrames 中)
  • matplotlib.pyplot(我们将使用 matplotlib 与 seaborn 一起绘制数据)
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score

第 2 步:加载数据集

我们的下一步是将数据导入 DataFrame。DataFrame 是 python 中的一个对象,它将帮助我们以表格格式组织数据。现在让我们从 sklearn 的糖尿病数据集中加载数据并创建我们的数据框。

# Load the diabetes dataset
diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)

# Create dataframe and add column names
features = pd.DataFrame(diabetes_X, columns=["age","sex","bmi","bp", "tc", "ldl", "hdl","tch", "ltg", "glu"])
target = pd.DataFrame(diabetes_y, columns=["disease_progression"])
df = pd.merge(features,target, left_index=True, right_index=True)

第 3 步:可视化

现在让我们为所有变量绘制一个热图,以便在我们的数据集中找到一些相关性以获得直觉。

correlation_matrix = df.corr()
f, ax = plt.subplots(figsize=(12, 9))
sns.heatmap(correlation_matrix, vmax=.8, square=True);

从热图中我们可以看出,与其他变量相比,年龄和疾病进展具有更高的相关性。您可以继续使用可视化,并可以从数据中找到有趣的见解。

第 4 步:执行简单的线性回归

首先,我们需要将数据集拆分为训练和测试数据集。我们将使用训练数据集训练我们的模型,然后使用测试数据集验证我们的模型。

# Split into validation and training data
diabetes_X_train, diabetes_X_test, diabetes_y_train, diabetes_y_test = train_test_split(features, target, test_size=0.1, random_state=1)

现在我们有了训练和测试数据集,我们将使用 sklearn 的 linear_model 创建一个 LinearRegression 对象,并使用训练数据集训练我们的模型。

# Create linear regression object
regr = linear_model.LinearRegression()

# Train the model using the training sets
regr.fit(diabetes_X_train, diabetes_y_train)

在我们的模型经过训练后,我们将通过针对测试数据集对其进行验证来评估我们的模型,如下所示

# Make predictions using the testing set
diabetes_y_pred = regr.predict(diabetes_X_test)

# The coefficients
print("Coefficients: \n", regr.coef_)
# The mean squared error
print("Mean squared error: %.2f" % mean_squared_error(diabetes_y_test, diabetes_y_pred))
# The coefficient of determination: 1 is perfect prediction
print("Coefficient of determination: %.2f" % r2_score(diabetes_y_test, diabetes_y_pred))

在上面的示例中,均方误差衡量回归线与一组数据点的接近程度,即观察到的数据点与预测值的接近程度。均方误差是通过取与函数相关的数据平方误差的平均值,特别是平均值来计算的。在数学上它可以表示为,

均方误差和r2 分数密切相关,但并不完全相同。它可以定义为“(模型解释的总方差)/总方差”。R平方比MSE更好。因为均方误差的值取决于变量的单位(即它不是标准化的量度),它可以随着变量单位的变化而变化。

结论

在介绍了线性回归和机器学习的最基本概念之后,是时候拿起一个数据集并将您的学习付诸实践了。

相关文章

  • Dummies的线性回归

    如果您正在开始您的数据科学或机器学习之旅,线性回归可能是您可能正在学习的第一个机器学习算法或统计模型。它可能是机器...

  • 机器学习实战——回归

    本章内容】 线性回归 局部加权线性回归 岭回归和逐步线性回归 例子 【线性回归】 wHat = (X.T*X).I...

  • 第一次打卡

    线性回归主要内容包括: 线性回归的基本要素线性回归模型从零开始的实现线性回归模型使用pytorch的简洁实现线性回...

  • 线性回归模型

    参考:1.使用Python进行线性回归2.python机器学习:多元线性回归3.线性回归概念 线性回归模型是线性模...

  • 逻辑回归和线性回归对比

    简单说几点 线性回归和逻辑回归都是广义线性回归模型的特例。他们俩是兄弟关系,都是广义线性回归的亲儿子 线性回归只能...

  • 算法概述-02

    1.逻辑回归和线性回归的联系和区别: 逻辑回归和线性回归的都是广义的线性回归。 线性回归是根据最小二乘法来建模,逻...

  • 2020-02-14

    线性回归:线性回归分为一元线性回归和多元线性回归,一元线性回归用一条直线描述数据之间的关系,多元回归是用一条曲线描...

  • 通俗得说线性回归算法(二)线性回归实战

    前情提要:通俗得说线性回归算法(一)线性回归初步介绍 一.sklearn线性回归详解 1.1 线性回归参数 介绍完...

  • 动手学深度学习(一) 线性回归

    线性回归 主要内容包括: 线性回归的基本要素 线性回归模型从零开始的实现 线性回归模型使用pytorch的简洁实现...

  • 线性回归

    线性回归 主要内容包括: 线性回归的基本要素 线性回归模型从零开始的实现 线性回归模型使用pytorch的简洁实现...

网友评论

      本文标题:Dummies的线性回归

      本文链接:https://www.haomeiwen.com/subject/tbowortx.html