第十二次做業——基於波士頓數據集的迴歸模型與房價預測0.0

任務:python

  1. 導入boston房價數據集
  1. 一元線性迴歸模型,創建一個變量與房價之間的預測模型,並圖形化顯示。
  1. 多元線性迴歸模型,創建13個變量與房價之間的預測模型,並檢測模型好壞,並圖形化顯示檢查結果。
  1. 一元多項式迴歸模型,創建一個變量與房價之間的預測模型,並圖形化顯示。

##一、導入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()

相關文章
相關標籤/搜索