线性回归的原理就不讲了,主要就是拟合w和b来找直线尽可能多的与数据接近
下面我们是基于 sklearn 实现线性回归算法,大概可以分为三步。
一、从 sklearn 库中导入线性模型中的线性回归算法,如下所示:
二、训练线性回归模型。使用 fit() 喂入训练数据,如下所示:
三、对训练好的模型进行预测。调用 predict() 预测输出结果, “x_”为输入测试数据,如下所示:
我们拟合一个简单的y = 3 *x^2 +22
import numpy as np
from matplotlib import pyplot as plt
from sklearn import linear_model
x = np.linspace(3, 6, 40)
y = 3 * x + 22
y += np.random.rand(40) #给数据加点噪声
x, y = x[:,None], y[:,None] #因为fit函数需要x和y为矩阵,所以用这样的方式对x和y升维
model = linear_model.LinearRegression()
model.fit(x,y)
#查看预测结果
x_ = [[3],[4],[5],[6]]
y_ = model.predict(x_)
print(y_)
#查看w和b,并绘制拟合的直线
w, b = model.coef_, model.intercept_
print("w值为:",model.coef_)
print("b截距值为:",model.intercept_)
y_ = w * x + b # 拟合的函数
#数据集绘制,散点图,图像满足函假设函数图像
plt.scatter(x,y)
plt.plot(x,y_,color="red",linewidth=3.0,linestyle="-")
plt.legend(["Data","func"],loc=0)
plt.show()
结果:
总结:
主要使用到的函数为 linear_model.LinearRegression()调用模型和model.fit()来训练模型,需要注意的是model.fit传入的必须是二维矩阵!