服务器上面建设网站,个人做网站最方便的方法,中文域名注册收费标准,开发公司交房前财务交付风险文章目录 一、什么是线性回归#xff1f;二、线性回归的基本概念2.1 一元线性回归2.2 多元线性回归 三、如何进行线性回归建模#xff1f;四、用Python实现线性回归4.1 导入必要的库4.2 创建虚拟数据集4.3 数据可视化4.4 拆分训练集和测试集4.5 训练线性回归模型4.6 查看模型… 文章目录 一、什么是线性回归二、线性回归的基本概念2.1 一元线性回归2.2 多元线性回归 三、如何进行线性回归建模四、用Python实现线性回归4.1 导入必要的库4.2 创建虚拟数据集4.3 数据可视化4.4 拆分训练集和测试集4.5 训练线性回归模型4.6 查看模型的参数4.7 模型预测与评估4.8 可视化拟合效果 五、总结5.1 学习要点5.2 练习题 一、什么是线性回归
线性回归Linear Regression是机器学习中最基础的算法之一它主要用于解决回归问题。简单来说线性回归就是找到一个合适的直线来描述数据之间的关系并用这个直线进行预测。
在生活中我们常常会遇到这样的场景你想知道房子的面积和价格之间的关系或者想了解广告投放和产品销售之间的联系。这些情况中存在一种变量随着另一种变量而变化的趋势这就是线性关系。而线性回归模型的目的就是找到这个趋势用一个数学公式将这种线性关系表示出来。
二、线性回归的基本概念
线性回归的目标是找到一个函数它能够尽可能准确地预测输入变量通常叫做自变量和输出变量通常叫做因变量之间的关系。这个函数通常是一个线性方程其形式为 y w x b y w x b ywxb
y预测值或因变量。x输入特征或自变量。w模型的权重或斜率。b偏置项也叫截距它表示直线在y轴上的截距。
通过调整 w 和 b 的值我们可以让这条直线尽可能“拟合”数据使得我们的预测值与真实值之间的误差尽可能小。
2.1 一元线性回归
最简单的线性回归是一元线性回归它只有一个自变量即用一个特征预测一个输出值。例如用房子的面积预测房子的价格。 y w x b y w x b ywxb
在这个公式中w 是描述房价随面积变化的速率b 是当面积为0时的房价当然这种情况在现实中并没有实际意义但它是数学上的一个假设。
2.2 多元线性回归
当有多个自变量时线性回归就变成了多元线性回归。例如我们用房子的面积、房间数量和建筑年份来预测房价这时公式变为 y w 1 x 1 w 2 x 2 w 3 x 3 . . . b y w_1 x_1 w_2 x_2 w_3 x_3 ... b yw1x1w2x2w3x3...b
其中w1, w2, w3 分别表示每个特征的权重x1, x2, x3 是各个特征值b 依旧是截距。
三、如何进行线性回归建模
线性回归的建模过程包括以下几个步骤
数据收集和准备收集数据并对数据进行清洗和预处理。数据可视化使用图表等手段查看数据以确定变量之间是否存在线性关系。模型训练使用线性回归算法拟合模型找出最优的 w 和 b。模型评估通过评价指标来衡量模型的好坏例如均方误差MSE。模型预测使用训练好的模型对新数据进行预测。
四、用Python实现线性回归
下面我们将通过Python来实现一个简单的一元线性回归模型使用一个虚拟的数据集来说明整个过程。
4.1 导入必要的库
首先我们需要导入一些库这些库将帮助我们完成数据分析和建模工作。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_errornumpy用于进行数值计算。matplotlib用于绘制数据可视化图表。sklearn一个流行的机器学习库包含许多常用的机器学习算法和工具。
4.2 创建虚拟数据集
我们创建一个简单的数据集其中包含自变量 x 和因变量 y并且两者之间存在线性关系。
# 生成随机数据
np.random.seed(0)
x 2 * np.random.rand(100, 1)
y 4 3 * x np.random.randn(100, 1)np.random.seed(0)设置随机数种子使得每次生成的随机数相同方便实验复现。x自变量随机生成的100个数每个数介于0到2之间。y因变量根据线性方程生成加上了一些噪声np.random.randn以模拟实际中的数据。
4.3 数据可视化
绘制数据散点图以便观察自变量和因变量之间是否存在线性关系。
plt.scatter(x, y, colorblue)
plt.xlabel(x)
plt.ylabel(y)
plt.title(Scatter Plot of Dataset)
plt.show()运行上述代码后我们将看到一个散点图这些点大致呈现线性分布说明可以用线性回归模型来拟合。
4.4 拆分训练集和测试集
在进行建模之前我们将数据集拆分为训练集和测试集以便评估模型的表现。
x_train, x_test, y_train, y_test train_test_split(x, y, test_size0.2, random_state42)train_test_split将数据随机分为训练集和测试集test_size0.2 表示20%的数据用于测试80%用于训练。
4.5 训练线性回归模型
使用 scikit-learn 提供的 LinearRegression 类来拟合模型。
model LinearRegression()
model.fit(x_train, y_train)model.fit(x_train, y_train)使用训练集数据来训练线性回归模型。训练的过程就是找到最佳的 w 和 b。
4.6 查看模型的参数
训练完成后我们可以查看模型学习到的权重和截距。
w model.coef_[0][0]
b model.intercept_[0]
print(f模型的权重 w: {w})
print(f模型的截距 b: {b})这些参数就是拟合出来的直线的方程 y w ∗ x b y w * x b yw∗xb
4.7 模型预测与评估
使用测试集对模型进行评估并计算模型的均方误差MSE。
y_pred model.predict(x_test)# 计算均方误差
mse mean_squared_error(y_test, y_pred)
print(f均方误差 MSE: {mse})mean_squared_error计算预测值和真实值之间的平均平方误差误差越小说明模型的拟合效果越好。
4.8 可视化拟合效果
最后我们可以将拟合的直线绘制在散点图上直观地看到模型的拟合效果。
plt.scatter(x, y, colorblue, labelData)
plt.plot(x, model.predict(x), colorred, linewidth2, labelLinear Fit)
plt.xlabel(x)
plt.ylabel(y)
plt.title(Linear Regression Fit)
plt.legend()
plt.show()在图中蓝色的散点是我们的原始数据红色的直线是模型拟合出来的直线。可以看到这条直线很好地描述了数据之间的关系。
五、总结
线性回归是机器学习中最基础的算法之一适用于那些变量之间存在线性关系的问题。通过本文的介绍我们了解了线性回归的基本概念、数学公式以及如何用Python进行建模。掌握线性回归对于理解更复杂的机器学习和深度学习算法有很大的帮助。
5.1 学习要点
线性回归的基本形式是 y wx b其中 w 是权重b 是截距。一元线性回归用于一个特征的情况而多元线性回归用于多个特征的情况。使用Python库如 scikit-learn可以很方便地实现线性回归模型。训练模型时需要将数据集拆分为训练集和测试集以便评估模型的泛化能力。
5.2 练习题
在本例中的数据上尝试增加更多的噪声观察模型的拟合效果会发生怎样的变化使用多元线性回归尝试预测一个虚拟的房价数据集。使用 sklearn.datasets 模块中的 load_boston 数据集构建一个线性回归模型预测房屋价格。
这篇文章介绍的线性回归仅仅是机器学习的一个起点希望大家通过动手实践能够对其有更加深刻的理解。如果有任何问题欢迎在评论中讨论
如果您觉得本文有帮助欢迎继续学习本专栏的其他内容下一篇文章将为您介绍K-最近邻KNN算法及其Python实现。