## 线性回归计算举例

news/2024/8/6 1:12:26/文章来源:https://blog.csdn.net/cin_ie/article/details/139279344

## 使用正规方程计算（一元线性回归）

``````import numpy as np
import matplotlib.pyplot as plt
# 转化成矩阵
X = np.linspace(0, 10, num = 30).reshape(-1, 1)
# 斜率和截距，随机生成
w = np.random.randint(1, 5, size = 1)
b = np.random.randint(1, 10, size = 1)
# 根据一元一次方程是计算目标值y，并加上“噪声”
y = X * w + b + np.random.randn(30, 1)
plt.scatter(X, y)# 重新构造X，b，相当于系数w0，前面统一乘以1
X = np.concatenate([X, np.full(shape = (30, 1), fill_value = 1)], axis = 1)
# 正规方程求解
theta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y).round(2)
print('一元一次方程真是的斜率和截距是：', w, b)
print('通过sklearn求解的斜率和截距是：',theta)
# 根据求解的斜率和截距绘制线性回归线形图
plt.plot(X[:, 0], X.dot(theta), color = 'green')
``````

### 运行结果

``````一元一次方程真是的斜率和截距是： [4] [4]

``````

## sklearn计算

### 一元线性方程

``````from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt# 生成一列等差数据
X = np.linspace(0, 9, num = 10).reshape(-1, 1)w = np.random.randint(1, 5, size = 1)
b = np.random.randint(1, 10, size = 1)y = X * w + b + np.random.randn(10, 1)
plt.scatter(X, y)model = LinearRegression()
model.fit(X, y)
w_ = model.coef_
b_ = model.intercept_
print('一元一次方程真是的斜率和截距是：', w, b)
print('通过sklearn求解的斜率和截距是：',w_, b_)
plt.plot(X, X.dot(w_) + b_, color = 'green')
``````

### 运行结果

``````一元一次方程真是的斜率和截距是： [2] [4]

``````

### 二元线性方程

``````from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
import warnings
#warnings.filterwarnings('ignore')# 转化成矩阵
x1 = np.random.randint(-150, 150, size = (300, 1))
x2 = np.random.randint(0, 300, size = (300, 1))# 斜率和截距，随机生成
w = np.random.randint(1, 5, size = 2)
b = np.random.randint(1, 10, size = 1)# 根据二元一次方程计算目标值y，并加上“噪声”
y = x1 * w[0] + x2 * w[1] + b + np.random.randn(300, 1)fig = plt.figure(figsize = (9, 6))
ax = Axes3D(fig)
# 三维散点图
ax.scatter(x1, x2, y)
# 调整视角
ax.view_init(elev = 10, azim = -20)# 重新构造X，将x1，x2以及截距b，相当于系数w0，前面同意乘以1进行数据合并
X = np.concatenate([x1, x2], axis = 1)
# 使用sklearn中的线性回归求解
model = LinearRegression()
model.fit(X, y)
w_ = model.coef_.reshape(-1)
b_ = model.intercept_print('二元一次方程真是的斜率和截距是：', w, b)
print('通过sklearn求解的斜率和截距是：', w_, b_)# 根据求解的斜率和截距绘制线性回归线形图
x = np.linspace(-150, 150, 100)
y = np.linspace(0, 300, 100)
z = x * w_[0] + y * w_[1] + b_
ax.plot(x, y, z, color = 'green')
``````

### 运行结果：

``````二元一次方程真是的斜率和截距是： [4 2] [6]

``````

### MySQL索引和视图

MySQL索引和视图是关系型数据库MySQL中的两个重要概念。索引用于优化数据库的查询性能&#xff0c;而视图用于提供一个逻辑上的表结构&#xff0c;方便用户查询和操作数据。 索引是一种数据结构&#xff0c;可以加速对数据库表中的数据进行查询的速度。通过创建索引&#xff0…

### 基于QEMU-aarch64学习UEFI(EDK2)-7Print打印函数

1 基于QEMU-aarch64学习UEFI(EDK2)-7Print打印函数 文章目录 1 基于QEMU-aarch64学习UEFI(EDK2)-7Print打印函数1.1 Print打印函数输出字符串1.2 Print打印函数其他用法程序开发我们以 edk2-stable202302版本为准。 1.1 Print打印函数输出字符串 我们把edk2/MdeModulePkg/App…

### Windows 使用技巧

Windows 使用技巧 ①局域网内共享文件 ②CTRL Y 和 CTRL Z ①局域网内共享文件 第一步&#xff1a; 选择要共享的文件&#xff08;分享方操作&#xff09; 第二步&#xff1a; 右键打开属性&#xff0c;选择共享&#xff08;分享方操作&#xff09; 第三步&#xff1a; …

### 第十四届蓝桥杯c++研究生组

A 关键思路是求每个十进制数的数字以及怎么在一个数组中让判断所有的数字次数相等。 求每个十进制的数字 while(n!0){int x n%10;//x获取了n的每一个位数字n/10;}扩展&#xff1a;求二进制的每位数字 &#xff08;注意&#xff1a;进制转换、1的个数、位运算&#xff09; x…

### Windows hook介绍与代码演示

Windows Hook 是一种机制&#xff0c;允许应用程序监视系统或处理特定事件。它可以拦截和更改消息&#xff0c;甚至可以插入到其他应用程序的消息处理机制中。Windows 提供了多种挂钩类型&#xff0c;例如键盘挂钩、鼠标挂钩、消息挂钩等。 hook代码实现 下面是一个使用 Wind…

### pillow学习3

Pillow库中&#xff0c;图像的模式代表了图像的颜色空间。以下是一些常见的图像模式及其含义&#xff1a; L&#xff08;灰度图&#xff09;&#xff1a;L模式表示图像是灰度图像&#xff0c;每个像素用8位表示&#xff08;范围为0-255&#xff09;&#xff0c;0表示黑色&#…

### idea的project structure下project [lauguage ]()level 没有java的sdk17选项如何导入

idea的project structure下project lauguage level 没有java的sdk17选项如何导入 别导入了&#xff0c;需要升级idea版本。idea中没有project language level没有17如何添加 - CSDN文库 别听这文章瞎扯淡 2021版本就是没有&#xff0c;直接卸载升级到最新版本就可以了。没办法…

### qmt量化交易策略小白学习笔记第8期【qmt编程之获取股票资金流向数据--内置Python】

qmt编程之获取股票资金流向数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 感谢关注&#xff0c;需免费开通量化回测与咨询实盘权限&#xff0c;可以和博主联系&#xff01; 获取股票资金…