sklearn实现一元线性回归
sklearn是完成机器学习最常用的库。此库封装了很多种机器学习算法,算法的细节都被封装在库里面,我们使用时只需要调用它的接口就可以了。数据集见我上一篇博客的链接。
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt
# 载入数据
data = np.genfromtxt("data.csv",delimiter= ",")
x_data = data[:,0]
y_data = data[:,1]
plt.scatter(x_data,y_data)
plt.show()
# 打印形状,(100,),100表示100个样本,表示一维的100个数据
print(x_data.shape)
# 取到所有行第一列,(下标从0开始),newaxis表示加上一个维度,sklearn处理时必须给数据加一个维度,否则处理时会报错
x_data = data[:,0,np.newaxis]
# 再次调用打印形状,得到结果(100,1),表示100行1列。
print(x_data.shape)
y_data = data[:,1,np.newaxis]
# 创建并拟合模型,第一句是实现一个线性回归的类,创建一个模型model,再用fit完成建模,传入x_data和y_data
model = LinearRegression()
model.fit(x_data,y_data)
LinearRegression(copy_X = True, fit_intercept = True, n_jobs = 1, normalize = False)
# 画图,predict方法来进行做预测得到预测的值
plt.plot(x_data,y_data,'b.')
plt.plot(x_data,model.predict(x_data) ,'r')
plt.show()
最后结果如下:
(100,)
(100, 1)