Scikit-Learn 线性回归

1. 引入包

import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
import sys

reload(sys)
sys.setdefaultencoding("utf-8")

2. 画图

# --------画图---------------
plt.figure()  # 实例化作图变量
plt.title('single variable')  # 图像标题
plt.xlabel('x')  # x轴文本
plt.ylabel('y')  # y轴文本
plt.axis([0, 400, 100, 400])
plt.grid(True)  # 是否绘制网格线

3. 画点

# --------画点---------------
X = [[50], [100], [150], [200], [250], [300]]
y = [[150], [200], [250], [280], [310], [330]]
X_test = [[50], [250]]  # 用来做最终效果测试
y_test = [[150], [310]]  # 用来做最终效果测试
plt.plot(X, y, 'k.')

4. 一元线性回归

# --------画线(一元线性回归)---------------
model = LinearRegression()
model.fit(X, y)
X2 = [[0], [400]]
y2 = model.predict(X2)
plt.plot(X2, y2, 'g-')

5. 二元线性回归

# --------画线(二元线性回归)---------------
xx = np.linspace(0, 400, 100)  # 设计x轴一系列点作为画图的x点集
quadratic_featurizer = PolynomialFeatures(degree=2)  # 实例化一个二次多项式特征实例
X_train_quadratic = quadratic_featurizer.fit_transform(X)  # 用二次多项式对样本X值做变换
xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1))  # 把训练好X值的多项式特征实例应用到一系列点上,形成矩阵
regressor_quadratic = LinearRegression()  # 创建一个线性回归实例
regressor_quadratic.fit(X_train_quadratic, y)  # 以多项式变换后的x值为输入,代入线性回归模型做训练

X_test_quadratic = quadratic_featurizer.transform(X_test)
plt.plot(xx, regressor_quadratic.predict(xx_quadratic), 'r-')  # 用训练好的模型作图

6. 准确率输出

# --------输出,准确率---------------
print '一元线性回归 r-squared', model.score(X_test, y_test)
print '二次回归     r-squared', regressor_quadratic.score(X_test_quadratic, y_test)

7. 显示图像:

plt.show()  # 展示图像

8. 输出结果:

一元线性回归 r-squared 0.985555555556
二次回归     r-squared 0.99998963648

9. 显示图像

 

LinearRegression参数参考:http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html

 

posted @ 2017-08-08 19:13  zhuhc  阅读(358)  评论(0编辑  收藏  举报