Python中的局部加權迴歸實例

WBOY
發布: 2023-06-11 19:37:36
原創
1526 人瀏覽過

Python中的局部加權迴歸實例

局部加權迴歸(Locally Weighted Regression)是一種非參數迴歸方法,與傳統的迴歸方法相比,它不使用固定的參數進行迴歸,而是根據樣本資料進行自適應地建構模型。這種自適應性質使得局部加權迴歸在迴歸分析、時間序列預測等領域廣泛應用。

在Python中,可以使用scikit-learn套件中的locally weighted scatterplot smoothing(LOWESS)演算法進行局部加權迴歸分析。在本文中,我們將介紹如何使用Python實作LOWESS演算法,並使用實例進行示範分析。

以下是使用Python實現局部加權迴歸的步驟:

  1. 導入所需的函式庫

在Python中實作局部加權迴歸,使用導入numpy、pandas、matplotlib.pyplot和sklearn.neighbors等函式庫。

  1. 準備資料

使用pandas函式庫讀取數據,準備資料為X和y。其中,X為自變量,y為因變量。

  1. 資料預處理

將X和y的資料進行標準化處理。這樣可以消除資料之間的量度不同,在建模之前將資料集中到零點附近,減少量級的影響。

  1. 擬合模型

使用sklearn.neighbors函式庫中的LocallyWeightedRegression類別來擬合模型。使用此方法時,需要指定兩個超參數:頻寬(bandwidth)和權值函數(weight function)。大多數情況下,頻寬值越小,模型越準確,但計算成本也越高。

  1. 預測值

使用locally_weighted_regression物件的predict方法來預測新輸入的自變數所對應的因變數。

下面,我們來看一個局部加權迴歸的實例。

範例1:基於人口資料進行房價預測

我們使用UCI資料庫中的波士頓房價資料集進行模型擬合和預測。資料集包含506個樣本和13個自變量,其中包括城鎮人均犯罪率(CRIM)、修建後1940年以前的自有住房比例(ZN)、一氧化氮濃度(NOX)、房間數人均(RM )等。

  1. 導入所需庫

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsRegressor

  1. 準備資料

讀取波士頓房價資料集

data = pd.read_csv('https ://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data', header = None, sep = 's ')

指定X和y

X = data.iloc[:, :13].values
y = data.iloc[:, 13].values

  1. 資料預處理

#對X和y進行標準化處理

sc_X = StandardScaler()
sc_y = StandardScaler()
X = sc_X.fit_transform(X)
y = sc_y.fit_transform(y.reshape (-1, 1))

將資料集拆分為訓練集和測試集

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X , y, test_size=0.2, random_state=0)

  1. 適合模型

使用LocallyWeightedRegression擬合模型

lwr = KNeighborsRegressor(n_neighbors=2 , weights='uniform')
lwr.fit(X_train, y_train)

  1. 預測值

使用lwr物件的predict方法預測

#y_pred = lwr.predict(X_test)
y_pred = sc_y.inverse_transform(y_pred)
y_test = sc_y.inverse_transform(y_test)

  1. 結果視覺化






### #將預測結果與測試集中的真實值繪製在同一張圖上比較######plt.scatter(X_test[:,5], y_test, color='red')###plt.scatter(X_test [:,5], y_pred, color='blue')###plt.xlabel('Number of rooms')###plt.ylabel('Price')###plt.title('The Price of Houses ')###plt.show()######根據視覺化圖形,我們可以看出模型的預測結果與測試集中的真實值很接近。這說明局部加權迴歸模型可以準確地預測房價。 ###

以上是Python中的局部加權迴歸實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板