scikit-learn机器学习(一)简单线性回归

 

 

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
## 设置字符集,防止中文乱码
import matplotlib
matplotlib.rcParams['font.sans-serif']=[u'simHei']
matplotlib.rcParams['axes.unicode_minus']=False


# X为披萨的直径
X = np.array([[6],[8],[10],[14],[18]]).reshape(-1,1)
# y是披萨的价格
y = [7,9,13,17.5,18]

plt.figure()
plt.title('披萨直径和价格的关系')
plt.xlabel("直径")
plt.ylabel("价格")
plt.plot(X,y,'ro')
plt.axis([0,25,0,25])
plt.grid(True)

# 建立线性回归模型
from sklearn.linear_model import LinearRegression
LR = LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,
                 normalize=False)
#参数介绍
#fit_intercept:是否有截据,如果没有则直线过原点。
#normalize:是否将数据归一化。
#copy_X:默认为True,当为True时,X会被copied,否则X将会被覆写。(这一参数的具体作用没明白,求大神指教了)
#n_jobs:默认值为1。计算时使用的CPU核数。
LR.fit(X,y)


# 画出图
# 输出斜率
print(LR.coef_)
# 输出截距
print(LR.intercept_)
xx=range(0,25)
yy = LR.coef_*xx+LR.intercept_
plt.plot(xx,yy,'g')

# 输出RSS残差平方和
print("RSS:%.2f" % np.mean((LR.predict(X)-y)**2))


# 预测一个直径之前从未见过的披萨价格
test_pizza = np.array([[12]])
predicted_price = LR.predict(test_pizza)[0]
print("预测直径为%d的披萨价格为 $%f" % (12,predicted_price))

# 评价模型
# score可以直接输出R方
X_test = np.array([8,9,11,16,12]).reshape(-1,1)
y_test = [11,8.5,15,18,11]
r_squared = LR.score(X_test,y_test)
print(r_squared)

print(LR.coef_)
[0.9762931]

print(LR.intercept_)
1.965517241379315

print("RSS:%.2f" % np.mean((LR.predict(X)-y)**2))
RSS:1.75

print("预测直径为%d的披萨价格为 $%f" % (12,predicted_price))
预测直径为12的披萨价格为 $13.681034

print(r_squared)
0.6620052929422553

 

 

posted on 2019-07-14 15:48  蔡军帅  阅读(435)  评论(0编辑  收藏  举报