回歸模型與房價預測


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()

截圖:

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM