24/8/4算法笔记 线性回归

在简单或多元线性回归中,最小二乘法用来估计模型参数,使得预测值与实际值之间的差异(残差)的平方和最小。

最小二乘法

导入代码包

复制代码
import numpy as np

X=np.array([[1,1],[2,1]])
X

构建矩阵

复制代码
y=np.array([14,10])
y

linalg是线性代数,用于求解线性方程组 Ax=b,solve计算线性代数回归问题

复制代码
np.linalg.solve(X,y)

转置

复制代码
X.T

矩阵乘法

复制代码
a=X.T.dot(X)

逆矩阵(inv)

复制代码
#逆矩阵
B=np.linalg.inv(a)
B

导入线性回归函数

复制代码
from sklearn.linear_model import LinearRegression

#LinearRegression 是一个常用的线性回归模型,用于预测连续的输出值。
model = LinearRegression(fit_intercept=False)#False,不计算斜率,没有使用正规方程

#X数据,y目标值
display(X,y)
model.fit(X,y)#这行代码用于训练模型。
model.coef_#结果,返回值#系数,斜率

获得截距项

复制代码
model.intercept_#表示截距项

带截距的线性方程

复制代码
y=y+12
y
复制代码
# 假设 X 是已经存在的一个 NumPy 数组,这里我们创建一个示例 X 来模拟
X = np.array([[1, 2], [3, 4]])

# 使用 np.full 创建一个形状为 (2, 1),填充值为 1 的数组,确保行数与 X 匹配
ones_array = np.full((X.shape[0], 1), fill_value=1)

# 使用 np.concatenate 在 X 的每行末尾添加 ones_array
X = np.concatenate([X, ones_array], axis=1)

# 假设 display 函数和 y 变量已经定义
display(X, y)

正规方程计算

复制代码
import matplotlib.pyplot as plt
import numpy as np

X=np.linspace(0,10,num=30).reshape(-1,1)#np.linspace(0, 10, num=30) 
这个函数会生成一个包含 30 个元素的数组,这些元素在 0 到 10 之间均匀分布。linspace 函数的第一个参数是起始值,第二个参数是结束值,第三个参数 num 是生成的元素数量。

斜率和截距随机生成

复制代码
w = np.random.randint(1,5,size=1)
b = np.random.randint(1,10,size=1)

y=X*w+b+np.random.randn(30,1)

plt.scatter(X,y)#绘制散点图
相关推荐
Jerry2 小时前
LeetCode 459. 重复的子字符串
算法
海石5 小时前
1500分的题目,确实有实力,不过还是我略胜一筹
算法·leetcode
海石5 小时前
【记忆化搜索】条条大路通AC,走好适合你的那一条,走到后再考虑走得快
算法·leetcode
Jerry7 小时前
LeetCode 151. 反转字符串中的单词
算法
β添砖java7 小时前
2025最新快速构建企业级虚拟专用网络环境学习笔记
笔记·学习
qianpeng48 小时前
IDA PRO笔记
笔记
a1117769 小时前
LM 算法迭代过程动画演示(SLAM)
算法
头茬韭菜9 小时前
Context 的生死抉择:四层压缩、截断算法与 Session Memory
算法·ai
Jerry9 小时前
LeetCode 541. 反转字符串 II
算法
Jerry10 小时前
LeetCode 344. 反转字符串
算法