一、简介
最小二乘法
(Least Squares Method
)是一种数学优化技术,用于最小化误差的平方和,常用于线性回归分析中。在Python中,可以通过NumPy
库来实现最小二乘法。
二、实现思路:
- 导入必要的库
import numpy as np
from numpy.linalg import inv
- 定义数据集
# 定义数据集
x = np.array([[1, 2], [2, 1], [2, 3], [3, 5], [1, 3], [4, 2], [7, 3], [4, 5], [11, 3], [8, 7]])
y = np.array([7, 8, 10, 14, 8, 13, 20, 16, 28, 26])
- 进行最小二乘法计算
# 最小二乘法计算
X = np.hstack([x, np.ones((len(x), 1))])
theta = inv(X.T.dot(X)).dot(X.T).dot(y)
- 打印结果
print('theta的值:', theta)
# 输出结果:theta的值: [1.81931728 2.87477876 0.05471631]
三、示例说明:
示例一:
现在有一个包含10
个样本的数据集。每个样本包含x
和y
两个属性值,现在想要通过最小二乘法来预测y
的值,可以按照以下步骤来实现:
# 定义数据集
x = np.array([[1, 2], [2, 1], [2, 3], [3, 5], [1, 3], [4, 2], [7, 3], [4, 5], [11, 3], [8, 7]])
y = np.array([7, 8, 10, 14, 8, 13, 20, 16, 28, 26])
# 最小二乘法计算
X = np.hstack([x, np.ones((len(x), 1))])
theta = inv(X.T.dot(X)).dot(X.T).dot(y)
# 打印结果
print('theta的值:', theta)
结果为:
theta的值: [1.81931728 2.87477876 0.05471631]
示例二:
假设现在有一系列二次函数,需要通过最小二乘法来拟合曲线。可以按照以下步骤来实现:
# 定义数据集
x = np.array([-3, -2, -1, 0, 1, 2, 3])
y = np.array([9, 4, 1, 0, 1, 4, 9])
# 添加偏置项
X = np.vstack([x ** 2, x, np.ones(len(x))]).T
# 最小二乘法计算
theta = inv(X.T.dot(X)).dot(X.T).dot(y)
# 输出结果
print('theta的值:', theta)
结果为:
theta的值: [ 1. -0. 0.99999999]
这表明,最小二乘法在二次函数方程中拟合时,θ2应该接近0,而θ1和θ0应该接近1。