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

什么是线性回归?

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

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

通俗易懂的例子:

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

例如,已知一些数据:

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

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

数学上:

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

y = mx + b

其中:

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

例子:用 Python 实现线性回归

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

python 复制代码
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 绘制出数据点和拟合的直线,帮助我们更直观地理解。

运行结果

python 复制代码
斜率 m: 3.0
截距 b: 0.0
预测的房价为:360.0 万元

结果分析

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

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

总结:

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

相关推荐
G.E.N.4 分钟前
开源!RAG竞技场(2):标准RAG算法
大数据·人工智能·深度学习·神经网络·算法·llm·rag
西西弗Sisyphus14 分钟前
如果让计算机理解人类语言- Word2Vec(Word to Vector,2013)
人工智能·word·word2vec
前端双越老师37 分钟前
30 行代码 langChain.js 开发你的第一个 Agent
人工智能·node.js·agent
LucianaiB1 小时前
Chatbox➕知识库➕Mcp = 机器学习私人语音助手
机器学习·知识库·mcp·chatbox
东坡肘子1 小时前
高温与奇怪的天象 | 肘子的 Swift 周报 #092
人工智能·swiftui·swift
KaneLogger1 小时前
视频转文字,别再反复拖进度条了
前端·javascript·人工智能
度假的小鱼1 小时前
从 “人工编码“ 到 “AI 协同“:大模型如何重塑软件开发的效率与范式
人工智能
zm-v-159304339862 小时前
ArcGIS 水文分析升级:基于深度学习的流域洪水演进过程模拟
人工智能·深度学习·arcgis
拓端研究室3 小时前
视频讲解|核密度估计朴素贝叶斯:业务数据分类—从理论到实践
人工智能·分类·数据挖掘
灵智工坊LingzhiAI3 小时前
人体坐姿检测系统项目教程(YOLO11+PyTorch+可视化)
人工智能·pytorch·python