前言
线性回归模型是几乎所有AI学习时必须学习的基础内容,本次主要是从代码的角度研究线性回归。
1.引入库
代码如下(示例):
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
这里导入了三个包:
- numpy 主要用于科学计算,帮助计算矩阵
- matplotlib 主要是画图,可以精准定位其位置
- sklearn 机器学习库,内置了很多现成的机器学习模型
注意:sklearn包的安装:
pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple
深入学习机器学习可以去阅读:蜥蜴书
2.构建训练数据
- 设置随机种子:
np.random.seed(0)
意义:设置种子可以确保程序可重复性,尤其是在做调试或者需要对比结果时非常有用。
- 生成均匀分布的随机数:
np.random.rand()
通过这个函数可以实现生成指定数量的均匀分配随机数
X_train = np.sort(np.random.rand(n_samples))` - 生成训练数据
y_train = (true_fun(X_train) + np.random.randn(n_samples) * 0.05).reshape(n_samples, 1)
他在原来的基础上引入了误差的概念,更加符合现实。。
3.开始训练
model = LinearRegression() # 定义模型
model.fit(X_train[:, np.newaxis], y_train) # 训练模型
print("输出参数w:", model.coef_) # 输出模型参数w
print("输出参数b:", model.intercept_) # 输出参数b
- np.newaxis的作用:
可以将 X_train 的形状从 (30,) 转换为 (30, 1),将其转化为列向量
4.测试并且可视化
X_test = np.linspace(0, 1, 100)
plt.plot(X_test, model.predict(X_test[:, np.newaxis]), label="Model")
plt.plot(X_test, true_fun(X_test), label="True function")
plt.scatter(X_train, y_train) # 画出训练集的点
plt.legend(loc="best")
plt.show()
结果
总结
本次学习,学到了随机种子设置的重要意义以及numpy的升维操作