当前位置: 首页 > article >正文

【机器学习】什么是线性回归?

什么是线性回归?

线性回归是一种 监督学习算法,它通过拟合一个直线(或平面,高维空间下是超平面)来建立 输入特征输出目标 之间的关系。简单来说,线性回归就是找出一个数学方程(通常是线性方程),它能够预测一个数值结果。

  • 输入特征 是你给模型的信息,它们用于帮助模型做出决策或预测。
  • 输出目标 是你希望模型预测或解释的结果。

通俗易懂的例子:

假设你有一个简单的数据集,想要预测某个城市的房价。你知道一些关于这个城市的 房子面积房价 的信息。你希望通过这些数据来预测一个新房子的价格。

例如,已知一些数据:

  • 房子面积:50平方米,100平方米,150平方米
  • 对应房价:150万元,300万元,450万元

你可以通过线性回归找出面积和房价之间的关系。通过简单的计算,线性回归会帮助你找到一个线性方程:房价 = 3 * 面积,即每平方米的价格是 3 万元。

数学上:

线性回归的目标是找到一个公式:

y = mx + b

其中:

  • y 是我们要预测的值(房价)。
  • x 是输入特征(房子面积)。
  • m 是斜率(表示每增加一个单位的面积,房价增加多少)。
  • b 是截距(即当面积为 0 时的房价,通常可以理解为固定成本)。

例子:用 Python 实现线性回归

下面的代码演示了如何使用 Python 中的 Scikit-learn 库来进行线性回归分析。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from matplotlib import rcParams

# 设置字体为支持中文的字体
rcParams['font.family'] = 'SimHei'
rcParams['axes.unicode_minus'] = False

# 准备数据
# 这里是房子的面积 (平方米)
X = np.array([[50], [100], [150], [200], [250]])
# 这里是对应的房价 (万元)
y = np.array([150, 300, 450, 600, 750])

# 创建线性回归模型
model = LinearRegression()

# 用数据训练模型
model.fit(X, y)

# 打印出模型的斜率 (m) 和截距 (b)
print(f"斜率 m: {model.coef_[0]}")
print(f"截距 b: {model.intercept_}")

# 使用训练好的模型预测房价
new_area = np.array([[120]])  # 假设新房子的面积是 120 平方米
predicted_price = model.predict(new_area)
print(f"预测的房价为:{predicted_price[0]} 万元")

# 可视化数据点和拟合的直线
plt.scatter(X, y, color='blue')  # 绘制原始数据点
plt.plot(X, model.predict(X), color='red')  # 绘制拟合的直线
plt.xlabel("房子面积 (平方米)")
plt.ylabel("房价 (万元)")
plt.title("线性回归:房价与面积的关系")
plt.show()

代码解释:

  1. 数据准备:X 是房子的面积(单位:平方米),y 是对应的房价(单位:万元)。
  2. 创建模型:我们使用 LinearRegression来创建一个线性回归模型。
  3. 训练模型:model.fit(X, y) 通过输入数据训练模型,找到最佳拟合直线。
  4. 查看模型参数:model.coef_ 是斜率 ( m ),model.intercept_ 是截距 b 。
  5. 预测:给定一个新的房子面积(比如 120 平方米),模型会预测出它的房价。
  6. 可视化:使用 matplotlib 绘制出数据点和拟合的直线,帮助我们更直观地理解。

运行结果

斜率 m: 3.0
截距 b: 0.0
预测的房价为:360.0 万元

在这里插入图片描述

结果分析

  • 模型发现每平方米的房价是 3 万元(斜率 ( m = 3 ))。
  • 当房子的面积为 120 平方米时,预测房价为 360 万元。

通过这种方式,线性回归帮助我们找到了房价和面积之间的关系,进而可以预测其他房子的价格。

总结:

线性回归是一种简单而强大的方法,用于预测数值型结果。通过拟合数据点并找到最佳的线性关系,我们可以预测新数据的结果。


http://www.kler.cn/a/599581.html

相关文章:

  • Go常见问题与回答(下)
  • 【HTTP 传输过程中的 cookie】
  • 详细Linux中级知识(不断完善)
  • 高级java每日一道面试题-2025年3月09日-微服务篇[Eureka篇]-说一说Eureka自我保护模式
  • AI日报 - 2025年3月25日
  • 2018扬州大学876农业机械学概论填空名词解释简答
  • leetcode1109. 航班预订统计-medium
  • 批量配置Linux ~/.bash_profile
  • 【蓝桥杯每日一题】3.20
  • 阅读li2019-DOT源码--逐步调试
  • 第八课:Python高级排序算法:分治策略的深度应用与实践
  • 生产部署与多框架支持
  • 从零开始实现 C++ TinyWebServer 项目总览
  • 常见框架漏洞—中间件IIS
  • Filnk并行度和算子链
  • Python前缀和(例题:异或和,求和)
  • Java中static final才是修饰常量的,单独的final并不能修饰常量这样理解对吗?
  • Codeforces Round 1012 (Div. 2)
  • JSONP 漏洞
  • Thinkphp(TP)框架漏洞攻略