1. 導入boston房價數據集,一元線性回歸模型,建立一個變量與房價之間的預測模型,並圖形化顯示。
代碼:
from sklearn import datasets # 波士頓房價數據集 data = datasets.load_boston() import pandas as pd # 轉為DataFrame dataDF = pd.DataFrame(data.data,columns=data.feature_names) dataDF # 數據可視化操作和人為的一元線性擬合 import matplotlib.pyplot as plt x = data.data[:,5] y = data.target plt.figure(figsize=(10,7)) plt.scatter(x,y,c='r',marker='p') plt.plot(x,7*x+10,'g') plt.show()
截圖:

代碼:
# 建立一元線性回歸模型 from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split x_train,x_test,y_train,y_test = train_test_split(data.data[:,5],data.target,test_size=0.3,) lr = LinearRegression() lr.fit(x_train.reshape(-1,1), y_train) print("斜率:",lr.coef_," 截距:",lr.intercept_) # 再次繪圖: plt.figure(figsize=(10,7)) plt.scatter(x_train,y_train) plt.plot(x,8.6*x-32,'g') plt.show()
截圖:

2. 多元線性回歸模型,建立13個變量與房價之間的預測模型,並檢測模型好壞,並圖形化顯示檢查結果。
代碼:
# 划分數據集 x_train, x_test, y_train, y_test = train_test_split(data.data,data.target,test_size=0.3) print(x_train.shape,y_train.shape) # 建立多項式性回歸模型 mlr = LinearRegression() mlr.fit(x_train,y_train) print('系數',mlr.coef_,"\n截距",mlr.intercept_) # 檢測模型好壞 import numpy as np x_predict = mlr.predict(x_test) # 打印預測的均方誤差 print("預測的均方誤差:", np.mean(x_predict - y_test)**2) # 打印模型的分數 print("模型的分數:",mlr.score(x_test, y_test))
截圖:


3.一元多項式回歸模型,建立一個變量與房價之間的預測模型,並圖形化顯示。
代碼:
# 繪制房價和人口密度關系的散點圖 plt.scatter(x_train[:,12],y_train) plt.show() # 用一元線性回歸擬合觀察效果 lr2 = LinearRegression() lr2.fit(x,y_train) plt.scatter(x, y_train) plt.plot(x, lr2.coef_* x + lr2.intercept_, 'g') plt.show()
截圖:


代碼:
# 建立多項式模型 from sklearn.preprocessing import PolynomialFeatures # 多項式化x x = x_train[:,12].reshape(-1,1) poly= PolynomialFeatures(degree=2) x_poly = poly.fit_transform(x) # 用多項式后的x建立多項式回歸模型 lrp = LinearRegression() lrp.fit(x_poly,y_train) # 預測 x_poly2 = poly.transform(x_test[:, 12].reshape(-1,1)) y_ploy_predict = lrp.predict(x_poly2) # 圖形化,將元數據,一元擬合,多元擬合進行繪圖觀察 plt.scatter(x_test[:,12], y_test) plt.plot(x, lr2.coef_* x + lr2.intercept_, 'g') plt.scatter(x_test[:,12], y_ploy_predict, c='r') plt.show()
截圖:

