Python中的局部加權迴歸實例
局部加權迴歸(Locally Weighted Regression)是一種非參數迴歸方法,與傳統的迴歸方法相比,它不使用固定的參數進行迴歸,而是根據樣本資料進行自適應地建構模型。這種自適應性質使得局部加權迴歸在迴歸分析、時間序列預測等領域廣泛應用。
在Python中,可以使用scikit-learn套件中的locally weighted scatterplot smoothing(LOWESS)演算法進行局部加權迴歸分析。在本文中,我們將介紹如何使用Python實作LOWESS演算法,並使用實例進行示範分析。
以下是使用Python實現局部加權迴歸的步驟:
在Python中實作局部加權迴歸,使用導入numpy、pandas、matplotlib.pyplot和sklearn.neighbors等函式庫。
使用pandas函式庫讀取數據,準備資料為X和y。其中,X為自變量,y為因變量。
將X和y的資料進行標準化處理。這樣可以消除資料之間的量度不同,在建模之前將資料集中到零點附近,減少量級的影響。
使用sklearn.neighbors函式庫中的LocallyWeightedRegression類別來擬合模型。使用此方法時,需要指定兩個超參數:頻寬(bandwidth)和權值函數(weight function)。大多數情況下,頻寬值越小,模型越準確,但計算成本也越高。
使用locally_weighted_regression物件的predict方法來預測新輸入的自變數所對應的因變數。
下面,我們來看一個局部加權迴歸的實例。
範例1:基於人口資料進行房價預測
我們使用UCI資料庫中的波士頓房價資料集進行模型擬合和預測。資料集包含506個樣本和13個自變量,其中包括城鎮人均犯罪率(CRIM)、修建後1940年以前的自有住房比例(ZN)、一氧化氮濃度(NOX)、房間數人均(RM )等。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsRegressor
讀取波士頓房價資料集
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
#對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)
使用LocallyWeightedRegression擬合模型
lwr = KNeighborsRegressor(n_neighbors=2 , weights='uniform')
lwr.fit(X_train, y_train)
使用lwr物件的predict方法預測
#y_pred = lwr.predict(X_test)
y_pred = sc_y.inverse_transform(y_pred)
y_test = sc_y.inverse_transform(y_test)
以上是Python中的局部加權迴歸實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!