任務:python
- 導入boston房價數據集
- 一元線性迴歸模型,創建一個變量與房價之間的預測模型,並圖形化顯示。
- 多元線性迴歸模型,創建13個變量與房價之間的預測模型,並檢測模型好壞,並圖形化顯示檢查結果。
- 一元多項式迴歸模型,創建一個變量與房價之間的預測模型,並圖形化顯示。
##一、導入Boston數據集spa
#!/usr/bin/python # -*- coding:utf-8 -*- # -*- author:DavidHuang -*- from sklearn.linear_model import LinearRegression from sklearn.datasets import load_boston from sklearn.cross_validation import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.svm import SVR from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error import numpy as np import pandas as pd
boston = load_boston() # # print(boston.DESCR) # 共506條波士頓地區房價信息,每條13項數值特徵描述和目標房價 # print("最大房價:",np.max(boston.target)) # print("最小房價:",np.min(boston.target)) # print("平均房價:",np.mean(boston.target)) #
能夠看到波士頓數據集的有關信息 code
print("開始進行預測和分析!\n========================") print(bos.keys())==") bos = load_boston() bos.keys() 數據集大小 print("數據集大小\n",boston.data.shape) 數據集特徵 print("數據集特徵\n",boston.feature_names) 數據集預測 print("數據集預測\n",boston.target)
數據集大小和特徵 數據集預測 orm
bd = pd.DataFrame(bos.data) print(bd) print("開始進行一元線性迴歸!準備好了嗎!") import matplotlib.pyplot as plt data = bos.data x = bos.data[:,5] y = bos.target plt.scatter(x,y) plt.plot(x,8*x-25)# 這裏定義一條直線 y = w*x+b,其中w是斜率,b是與y軸的截距 plt.show()
能夠看到迴歸模型和迴歸線是比較符合的 blog
print("一元迴歸結束!開始進行多元線性迴歸!準備好了嗎!") import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression boston = load_boston() lineR = LinearRegression() # w = lineR.coef_ # b = lineR.intercept_ x = boston.data[:,12].reshape(-1,1) y = boston.target lineR.fit(boston.data,y) plt.figure(figsize=(10,6)) plt.scatter(x,y) plt.plot(x,-0.8*x+30,'r')#迴歸線 plt.show()
# 將一元轉多元 lineR = LinearRegression() lineR.fit(x,y) y_pred = lineR.predict(x) plt.plot(x,y_pred) print(lineR.coef_,lineR.intercept_) plt.show()
# 一元轉多項 from sklearn.preprocessing import PolynomialFeatures poly = PolynomialFeatures(degree=2) x_poly = poly.fit_transform(x) lrp = LinearRegression() lrp.fit(x_poly,y) y_poly_pred = lrp.predict(x_poly) plt.scatter(x,y) plt.scatter(x,y_pred) plt.scatter(x,y_poly_pred) plt.show()