1. 程式人生 > 其它 >16多項式迴歸-房價與尺寸線性擬合

16多項式迴歸-房價與尺寸線性擬合

多項式迴歸

  • 多項式迴歸(Polynomial Regression)是研究一個因變數與一個或多個自變數間多項式的迴歸分析方法。如果自變數只有一個時,稱為一元多項式迴歸;如果自變數有多個時,稱為多元多項式迴歸。

  • 一元m次多項式迴歸方程

  • 二元二次多項式迴歸方程

  • 在一元迴歸分析中,如果依變數y與自變數X的關係為非線性的,但是又找不到適當的函式曲線來擬合,則可以採用一元多項式迴歸。

  • 多項式迴歸的最大優點就是可以通過增加X的高次項對實測點進行逼近,直至滿意為止。

  • 事實上,多項式迴歸可以處理相當一類非線性問題,它在迴歸分析中佔有重要的地位,因為任一函式都可以分段用多項式來逼近。

線性迴歸例項中,是運用直線來擬合數據輸入與輸出之間的線性關係。

不同於線性迴歸,多項式迴歸是使用曲線擬合資料的輸人與輸出的對映關係。

多項式迴歸的應用

應用背景:根據已知的房屋成交價和房屋的尺寸進行了線性迴歸,繼而可以對已知房屋尺寸,而未知房屋成交價格的例項進行了成交價格的預測,但是在實際的應用中這樣的擬合往往不夠好,因此我們在此對該資料集進行多項式迴歸。

目標:對房屋成交資訊建立多項式迴歸方程,並依據迴歸方程對房屋價格進行預測。

技術路線:sklearn.preprocessing.PolynomialFeatures

例項資料:成交資訊包括房屋的面積以及對應的成交價格

  • 房屋面積單位為平方英尺(ft^2)
  • 屋成交價格單位為萬



實驗過程

使用演算法:線性迴歸

實現步驟:
1、建立工程並導人sklearn包

import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model
from sklearn.preprocessing import PolynomialFeatures

2、載入訓練資料,建立迴歸方程。

3.視覺化處理


具體程式碼

import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model
from sklearn.preprocessing import PolynomialFeatures

# 讀取資料集
datasets_X = []
datasets_Y = []
fr = open('prices.txt', 'r')
lines = fr.readlines()
for line in lines:
    items = line.strip().split(',')
    datasets_X.append(int(items[0]))
    datasets_Y.append(int(items[1]))

datasets_X = np.array(datasets_X).reshape([-1, 1])
datasets_Y = np.array(datasets_Y)

minX = min(datasets_X)
maxX = max(datasets_X)
X = np.arange(minX, maxX).reshape([-1, 1])

poly_reg = PolynomialFeatures(degree=2)
X_poly = poly_reg.fit_transform(datasets_X)
# 使用線性模型學習X_poly和datasets_Y之間的對映關係(即引數)
lin_reg_2 = linear_model.LinearRegression()
lin_reg_2.fit(X_poly, datasets_Y)

# 影象中顯示
plt.scatter(datasets_X, datasets_Y, color='red', label='origin data')
plt.plot(X, lin_reg_2.predict(poly_reg.fit_transform(X)), color='blue', label='Polynomial regression prediction')
plt.legend()  # 使label生效
plt.xlabel('Area')
plt.ylabel('Price')
plt.show()



結果展示

通過多項式迴歸擬合的曲線與資料點的關係如下圖所示。依據該多項式迴歸方程即可通過房屋的尺寸,來預測房屋的成交價格。



最後的思考

線性迴歸和多項式迴歸,都是迴歸的一種方法。

個人觀點:

  • 線性迴歸,用來處理不是正態分佈的資料
  • 多項式迴歸用來處理正態分佈的資料,資料有一定的發展趨勢

今天早上騎車被撞了,摔了一跤,手摔破了麻了痛死了,平板也摔折了,不過還能用。

還好臉沒事