自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

原來機(jī)器學(xué)習(xí)那么簡單—KNN回歸

發(fā)布于 2025-1-8 13:17
瀏覽
0收藏

一、什么是K近鄰回歸?

        K近鄰回歸(K-Nearest Neighbors Regression,簡稱KNN回歸)是一種簡單直觀的機(jī)器學(xué)習(xí)算法。KNN回歸通過尋找樣本空間中與目標(biāo)點最接近的K個鄰居,利用這些鄰居的平均值或加權(quán)平均值來預(yù)測目標(biāo)點的值。KNN回歸屬于非參數(shù)模型,因為它不對數(shù)據(jù)的分布做出假設(shè),也不需要訓(xùn)練過程。

二、K近鄰回歸的原理

        KNN回歸的核心思想非常直觀,即“相似的樣本具有相似的輸出”。具體步驟如下:

  1. 計算距離:對于待預(yù)測的樣本點,計算其與訓(xùn)練集中每一個樣本點之間的距離。常用的距離度量包括歐氏距離(Euclidean Distance)、曼哈頓距離(Manhattan Distance)等。歐氏距離的計算公式為:

原來機(jī)器學(xué)習(xí)那么簡單—KNN回歸-AI.x社區(qū)

  1. 選擇K個鄰居:根據(jù)計算得到的距離,選擇距離待預(yù)測樣本點最近的K個鄰居。
  2. 計算預(yù)測值:根據(jù)選中的K個鄰居的輸出值,計算待預(yù)測樣本點的輸出值。常用的方法包括簡單平均和加權(quán)平均。

如果是簡單平均,則預(yù)測值為K個鄰居的輸出值的算術(shù)平均:

原來機(jī)器學(xué)習(xí)那么簡單—KNN回歸-AI.x社區(qū)

三、K近鄰回歸的優(yōu)缺點

優(yōu)點:

  • 簡單直觀:算法思想簡單,容易理解和實現(xiàn)。
  • 無模型假設(shè):KNN回歸不對數(shù)據(jù)的分布做任何假設(shè),適用于各種數(shù)據(jù)分布。
  • 高靈活性:由于無需訓(xùn)練過程,KNN回歸可以處理在線學(xué)習(xí)問題,也可以隨時加入新的數(shù)據(jù)。

缺點:

  • 計算復(fù)雜度高:對于大規(guī)模數(shù)據(jù)集,計算每個樣本點的距離代價較高,影響預(yù)測效率。
  • 維度災(zāi)難:隨著特征維數(shù)的增加,樣本之間的距離變得越來越難以區(qū)分,導(dǎo)致預(yù)測效果下降。
  • 對異常值敏感:KNN回歸直接依賴于鄰居的輸出值,如果鄰居中存在異常值,可能會嚴(yán)重影響預(yù)測結(jié)果。

四、案例分析

        在這一部分,我們還是使用加州房價數(shù)據(jù)集來演示如何應(yīng)用K近鄰回歸算法進(jìn)行預(yù)測。加州房價數(shù)據(jù)集包含了加州的街區(qū)信息,每個街區(qū)有多項特征,包括人口、收入、房屋年齡等。目標(biāo)是根據(jù)這些特征預(yù)測該街區(qū)的房屋中位數(shù)價格。

  1. 數(shù)據(jù)加載與預(yù)處理
  • 加載加州房價數(shù)據(jù)集并進(jìn)行標(biāo)準(zhǔn)化處理,確保所有特征都在相同的尺度上。
  • 將數(shù)據(jù)集劃分為訓(xùn)練集和測試集,比例為8:2。
  1. 模型訓(xùn)練
  • 使用KNeighborsRegressor創(chuàng)建一個K近鄰回歸模型,選擇K=5,即考慮最近的5個鄰居。
  • 用訓(xùn)練集的數(shù)據(jù)來訓(xùn)練模型。
  1. 模型預(yù)測
  • 利用訓(xùn)練好的模型對測試集進(jìn)行預(yù)測,并計算均方誤差(MSE)作為模型性能的評估指標(biāo)。

代碼實現(xiàn):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsRegressor
from sklearn.metrics import mean_squared_error

# 加載加州房價數(shù)據(jù)集
california = fetch_california_housing()
X = california.data
y = california.target

# 數(shù)據(jù)標(biāo)準(zhǔn)化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 劃分訓(xùn)練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

# 創(chuàng)建K近鄰回歸模型并訓(xùn)練
knn = KNeighborsRegressor(n_neighbors=5)
knn.fit(X_train, y_train)

# 預(yù)測測試集
y_pred = knn.predict(X_test)

# 計算均方誤差
mse = mean_squared_error(y_test, y_pred)
print(f"測試集的均方誤差: {mse:.2f}")

# 可視化結(jié)果
plt.figure(figsize=(10, 6))
plt.scatter(y_test, y_pred, edgecolor='k', alpha=0.7)
plt.plot([min(y_test), max(y_test)], [min(y_test), max(y_test)], 'r--', lw=3)
plt.xlabel("真實房價")
plt.ylabel("預(yù)測房價")
plt.title("K近鄰回歸預(yù)測結(jié)果")
plt.show()

結(jié)果分析:

測試集的均方誤差: 0.43。繪制模型預(yù)測的房價與真實房價之間的關(guān)系圖如下:

原來機(jī)器學(xué)習(xí)那么簡單—KNN回歸-AI.x社區(qū)

五、總結(jié)

        K近鄰回歸是一種簡單且易于理解的回歸算法,適合用于小規(guī)模數(shù)據(jù)集或需要在線更新模型的場景。然而,在使用KNN回歸時,需要考慮數(shù)據(jù)的維數(shù)和計算復(fù)雜度,并對異常值進(jìn)行處理,以確保模型的預(yù)測效果。

本文轉(zhuǎn)載自寶寶數(shù)模AI,作者: BBSM ????

收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦