【机器学习】什么是线性回归?
什么是线性回归?
线性回归是一种 监督学习算法,它通过拟合一个直线(或平面,高维空间下是超平面)来建立 输入特征 和 输出目标 之间的关系。简单来说,线性回归就是找出一个数学方程(通常是线性方程),它能够预测一个数值结果。
- 输入特征 是你给模型的信息,它们用于帮助模型做出决策或预测。
- 输出目标 是你希望模型预测或解释的结果。
通俗易懂的例子:
假设你有一个简单的数据集,想要预测某个城市的房价。你知道一些关于这个城市的 房子面积 和 房价 的信息。你希望通过这些数据来预测一个新房子的价格。
例如,已知一些数据:
- 房子面积: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()
代码解释:
- 数据准备:X 是房子的面积(单位:平方米),y 是对应的房价(单位:万元)。
- 创建模型:我们使用 LinearRegression来创建一个线性回归模型。
- 训练模型:model.fit(X, y) 通过输入数据训练模型,找到最佳拟合直线。
- 查看模型参数:model.coef_ 是斜率 ( m ),model.intercept_ 是截距 b 。
- 预测:给定一个新的房子面积(比如 120 平方米),模型会预测出它的房价。
- 可视化:使用 matplotlib 绘制出数据点和拟合的直线,帮助我们更直观地理解。
运行结果:
斜率 m: 3.0
截距 b: 0.0
预测的房价为:360.0 万元
结果分析:
- 模型发现每平方米的房价是 3 万元(斜率 ( m = 3 ))。
- 当房子的面积为 120 平方米时,预测房价为 360 万元。
通过这种方式,线性回归帮助我们找到了房价和面积之间的关系,进而可以预测其他房子的价格。
总结:
线性回归是一种简单而强大的方法,用于预测数值型结果。通过拟合数据点并找到最佳的线性关系,我们可以预测新数据的结果。