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