文章目录
- 前言
- scikit-learn实现简单线性回归
- scikit-learn实现多元线性回归(二元)
- 总结
前言
💫你好,我是辰chen,本文旨在准备考研复试或就业
💫本文内容来自某机构网课,是我为复试准备的第一个项目
💫欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容
🌟 预置知识详见我的AIoT板块,需掌握 基本Python语法, Numpy, Pandas, Matplotlib
以下的几个专栏是本人比较满意的专栏(大部分专栏仍在持续更新),欢迎大家的关注:
💥ACM-ICPC算法汇总【基础篇】
💥ACM-ICPC算法汇总【提高篇】
💥AIoT(人工智能+物联网)
💥考研
💥CSP认证考试历年题解
scikit-learn实现简单线性回归
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt# 构造矩阵
X = np.linspace(0, 10, 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) # 绘制散点图# 使用 scikit-learn 中的线性回归求解
model = LinearRegression()
model.fit(X, y)w_ = model.coef_
b_ = model.intercept_print('一元一次方程真实的斜率和截距是:', w, b)
print('通过scikit-learn求解的斜率和截距是:', w_, b_)
plt.plot(X, X.dot(w_) + b_, color = 'red')
scikit-learn实现多元线性回归(二元)
# 选择二元是因为方便画图
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D# 变换矩阵
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)) # 创建一个宽度为9,高度为6的图像
ax = Axes3D(fig) # 床架三维坐标轴
ax.scatter(x1, x2, y) # 三维散点图,三个坐标轴 x,y,z 分别对应 x1,x2,y
ax.view_init(elev = 10, azim = -20) # 调整视角
# elev 参数表示视角的仰角,azim 参数表示视角的方位角# 重新构造X
X = np.concatenate([x1, x2], axis = 1)
# 使用scikit-learn中的线性回归求解
model = LinearRegression()
model.fit(X, y)
# 如果没有reshape(-1),算出来的w是列向量
# reshape(-1)后是行向量(一维数组,方便使用 w_[0], w_[1])
w_ = model.coef_.reshape(-1)
b_ = model.intercept_print('二元一次方程真实的斜率和截距是:', w, b)
print('通过scikit-learn求解的斜率和截距是:', w_, b_)# 重新构造等比数列 x1(下记为 x), x2(下记为 y)【方便绘图】
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 = 'red')
总结
1.model.coef_
:
model.coef_
是一个数组(当然不一定是一维的,具体取决于计算式,如上述代码中计算出的即为二维列向量),包含了线性模型中每个特征的权重(系数)。对于线性回归模型,这些权重用于衡量每个特征对预测目标的影响程度。如果你有多个特征,model.coef_
的每个元素对应于相应特征的权重。
2.model.intercept_
:
model.intercept_
是线性模型的截距(偏移项),表示当所有特征都为零时,预测的目标值应该是多少。在数学上,截距代表了线性函数与 y 轴的交点。