国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】

這篇具有很好參考價值的文章主要介紹了【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

KNN算法介紹

KNN(K Near Neighbor):k個最近的鄰居,即每個樣本都可以用它最接近的k個鄰居來代表。KNN算法屬于監(jiān)督學習方式的分類算法,我的理解就是計算某給點到每個點的距離作為相似度的反饋。

簡單來講,KNN就是“近朱者赤,近墨者黑”的一種分類算法。
【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】

KNN是一種基于實例的學習,屬于懶惰學習,即沒有顯式學習過程。

要區(qū)分一下聚類(如Kmeans等),KNN是監(jiān)督學習分類,而Kmeans是無監(jiān)督學習的聚類,聚類將無標簽的數(shù)據(jù)分成不同的簇。
【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】

KNN算法三要素

距離度量

特征連續(xù):距離函數(shù)選用曼哈頓距離(L1距離)/歐氏距離(L2距離)【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】
當p=1 的時候,它是曼哈頓距離
當p=2的時候,它是歐式距離
當p不選擇的時候,它是切比雪夫
特征離散:漢明距離
【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】
舉最簡單的例子來說明歐式/曼哈頓距離公式是什么樣的。
【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】
【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】

K取值

在scikit-learn重KNN算法的K值是通過n_neighbors參數(shù)來調(diào)節(jié)的,默認值是5。

參考李航博士一書統(tǒng)計學習方法中寫道的K值選擇:

K值小,相當于用較小的領域中的訓練實例進行預測,只要與輸入實例相近的實例才會對預測結(jié)果,模型變得復雜,只要改變一點點就可能導致分類結(jié)果出錯,泛化性不佳。(學習近似誤差小,但是估計誤差增大,過擬合)
K值大,相當于用較大的領域中的訓練實例進行預測,與輸入實例較遠的實例也會對預測結(jié)果產(chǎn)生影響,模型變得簡單,可能預測出錯。(學習近似誤差大,但是估計誤差小,欠擬合)
極端情況:K=0,沒有可以類比的鄰居;K=N,模型太簡單,輸出的分類就是所有類中數(shù)量最多的,距離都沒有產(chǎn)生作用。
【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】
什么是近似誤差和估計誤差:

近似誤差:訓練集上的誤差
估計誤差:測試集上的誤差

分類規(guī)則

knn使用的分類決策規(guī)則是多數(shù)表決,如果損失函數(shù)為0-1損失函數(shù),那么要使誤分類率最小即使經(jīng)驗風險最小,多數(shù)表決規(guī)則實際上就等同于經(jīng)驗風險最小化。

KNN實際應用

案例引入
我們先看一個案例,這樣可以更直觀的理解KNN算法。數(shù)據(jù)如下表,其中包括10個人的身高、體重和年齡數(shù)據(jù),然后預測第十一個人的體重。
【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】
為了更清晰地了解數(shù)據(jù)間的關(guān)系,我們用坐標軸將身高和年齡表示出來,其中橫坐標為年齡(age)、縱坐標為身高(Height)。【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】
通過上圖可以看到,11點的值是需要求解的,那么怎么求呢?我們可以看到在圖中11點更接近于5點和1點,所以其體重應該更接近于5點和1點的值,也就是在72-77之間,這樣我們就可以大致得到11點的體重值。下面我們用算法來實現(xiàn)這一過程。
KNN算法工作

如上所述,KNN可以用于分類和回歸問題,通過樣本間的某些相似特征來進行預測未知元素的值,即“物以類聚”:相同或相似的事物之間具有一些相似的特征。

在分類問題中,我們可以直接將其最近的樣本值作為預測結(jié)果,那么在回歸問題中怎么計算最終的預測結(jié)果呢?就像上面的例子,11點取值介于72-77之間,最終結(jié)果應該取多少合適呢?一般來說,我們將其平均值作為最終的預測結(jié)果。

1、計算待測點到已知點的距離
【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】
2、選擇距離待測點最近的K個點,k值為人工設置的,至于k值如何設置合適在后邊討論。在這個例子中,我們假設k=3,即點1、5、6被選擇。【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】
3、將點1、5、6的值取平均值作為最終的預測結(jié)果。即11點的Weight=(77+72+60)/3 = 69.66 kg
K值選擇

K值代表最近鄰的個數(shù),k值的選擇對預測結(jié)果有較大影響。

在上面的例子中,我們選擇k=3時
【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】
最終的預測結(jié)果為

ID11 = (77+72+60)/3
ID11 = 69.66 kg

當我們選擇k=5時
【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】
最終的預測結(jié)果為

ID 11 = (77+59+72+60+58)/5
ID 11 = 65.2 kg
我們可以看到k值不同結(jié)果也將不同,因此我們需要選擇一個合適的k值來獲得最佳的預測結(jié)果。我們的目標就是獲得預測值與真實值之間最小的誤差。

下面我們看一下k值與誤差的關(guān)系曲線

【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】
【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】
由曲線可得,如果K值太小,則會發(fā)生過擬合;如果k值太大,則會發(fā)生欠擬合。因此我們根據(jù)誤差曲線選擇最佳k值為9,你也可以使用其他方法尋找最佳k值。

python實現(xiàn)代碼

1、讀取數(shù)據(jù)

import pandas as pd
df = pd.read_csv('train.csv')
df.head()

2、處理缺失值

df.isnull().sum()
#missing values in Item_weight and Outlet_size needs to be imputed
mean = df['Item_Weight'].mean() #imputing item_weight with mean
df['Item_Weight'].fillna(mean, inplace =True)
 
mode = df['Outlet_Size'].mode() #imputing outlet size with mode
df['Outlet_Size'].fillna(mode[0], inplace =True)

3、處理分類變量并刪除ID列

df.drop(['Item_Identifier', 'Outlet_Identifier'], axis=1, inplace=True)
df = pd.get_dummies(df)

4、劃分訓練集與測試

df.drop(['Item_Identifier', 'Outlet_Identifier'], axis=1, inplace=True)from sklearn.model_selection import train_test_split
train , test = train_test_split(df, test_size = 0.3)
 
x_train = train.drop('Item_Outlet_Sales', axis=1)
y_train = train['Item_Outlet_Sales']
 
x_test = test.drop('Item_Outlet_Sales', axis = 1)
y_test = test['Item_Outlet_Sales']
df = pd.get_dummies(df)

5、特征標準化

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range=(0, 1))
 
x_train_scaled = scaler.fit_transform(x_train)
x_train = pd.DataFrame(x_train_scaled)
 
x_test_scaled = scaler.fit_transform(x_test)
x_test = pd.DataFrame(x_test_scaled)

6、查看誤差曲線

from sklearn import neighbors
from sklearn.metrics import mean_squared_error 
from math import sqrt
import matplotlib.pyplot as plt
%matplotlib inline
rmse_val = [] #to store rmse values for different k
for K in range(20):
    K = K+1
    model = neighbors.KNeighborsRegressor(n_neighbors = K)
 
    model.fit(x_train, y_train)  #fit the model
    pred=model.predict(x_test) #make prediction on test set
    error = sqrt(mean_squared_error(y_test,pred)) #calculate rmse
    rmse_val.append(error) #store rmse values
    print('RMSE value for k= ' , K , 'is:', error)
curve = pd.DataFrame(rmse_val) #elbow curve 
curve.plot()

輸出
【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】
由誤差曲線可得我們選擇k=7可以獲得最優(yōu)結(jié)果

預測結(jié)果

test = pd.read_csv('test.csv')
submission = pd.read_csv('SampleSubmission.csv')
submission['Item_Identifier'] = test['Item_Identifier']
submission['Outlet_Identifier'] = test['Outlet_Identifier']
 
#preprocessing test dataset
test.drop(['Item_Identifier', 'Outlet_Identifier'], axis=1, inplace=True)
test['Item_Weight'].fillna(mean, inplace =True)
test = pd.get_dummies(test)
test_scaled = scaler.fit_transform(test)
test = pd.DataFrame(test_scaled)
 
#predicting on the test set and creating submission file
predict = model.predict(test)
submission['Item_Outlet_Sales'] = predict
submission.to_csv('submit_file.csv',index=False)

KNN算法優(yōu)點,缺點,適用場景

優(yōu)點

流程簡單明了,易于實現(xiàn)
方便進行多分類任務,效果優(yōu)于SVM
適合對稀有事件進行分類
缺點

計算量大,T = O ( n ) T=O(n)T=O(n),需要計算到每個點的距離
樣本不平衡時(一些分類數(shù)量少,一些多),前K個樣本中大容量類別占據(jù)多數(shù),這種情況會影響到分類結(jié)果
K太小過擬合,K太大欠擬合,K較難決定得完美,通過交叉驗證確定K
適用場景

多分類問題
稀有事件分類問題
文本分類問題
模式識別
聚類分析
樣本數(shù)量較少的分類問題文章來源地址http://www.zghlxwxcb.cn/news/detail-453266.html

到了這里,關(guān)于【KNN算法詳解(用法,優(yōu)缺點,適用場景)及應用】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • Redis詳解,包括安裝命令,應用場景,優(yōu)缺點,案列分析,各個開發(fā)語言如何應用

    Redis 是一個基于內(nèi)存的開源數(shù)據(jù)庫系統(tǒng),被廣泛應用于 Web 應用、消息隊列、緩存、實時統(tǒng)計等領域。下面是 Redis 的詳解,包括安裝命令、應用場景和優(yōu)缺點,以及案列分析和各個開發(fā)語言如何應用。此外,還提供了一些具體代碼示例。 Redis 的安裝命令因操作系統(tǒng)而異。以下

    2024年02月15日
    瀏覽(20)
  • 二十四種設計模式與六大設計原則(三):【裝飾模式、迭代器模式、組合模式、觀察者模式、責任鏈模式、訪問者模式】的定義、舉例說明、核心思想、適用場景和優(yōu)缺點

    二十四種設計模式與六大設計原則(三):【裝飾模式、迭代器模式、組合模式、觀察者模式、責任鏈模式、訪問者模式】的定義、舉例說明、核心思想、適用場景和優(yōu)缺點

    接上次博客:二十四種設計模式與六大設計原則(二):【門面模式、適配器模式、模板方法模式、建造者模式、橋梁模式、命令模式】的定義、舉例說明、核心思想、適用場景和優(yōu)缺點-CSDN博客 目錄 裝飾模式【Decorator Pattern】 定義 舉例說明 核心思想 適用場景 優(yōu)缺點 迭代

    2024年04月17日
    瀏覽(25)
  • [機器學習]K-means算法詳解:原理、優(yōu)缺點、代碼實現(xiàn)、變體及實際應用

    文章首發(fā)于若綰 [機器學習]K-means算法詳解:原理、優(yōu)缺點、代碼實現(xiàn)、變體及實際應用,轉(zhuǎn)載請注明出處。 K-means算法是一種非常流行的無監(jiān)督學習方法,主要應用于聚類問題。本篇博客將詳細介紹K-means算法的原理、優(yōu)缺點及實際應用場景。 K-means算法的核心思想是將數(shù)據(jù)劃分

    2024年02月08日
    瀏覽(22)
  • 淺談 iframe的優(yōu)缺點以及使用場景

    提示:以下是本篇文章正文內(nèi)容 iframe 是嵌入式框架,是 HTML框架 ,還是一個 內(nèi)聯(lián)元素 ,iframe元素會創(chuàng)建包含另一個文檔的內(nèi)聯(lián)框架(行內(nèi)框架),說白了就是,iframe用來在頁面嵌入其他的頁面。 通常我們使用iframe直接在頁面嵌套iframe標簽指定src就可以了。 iframe能夠把嵌入

    2024年02月05日
    瀏覽(24)
  • 主流的 NoSQL 數(shù)據(jù)庫 應用場景 優(yōu)缺點

    主流的 NoSQL 數(shù)據(jù)庫包括 MongoDB、Cassandra、Redis 和 Couchbase 等,它們在不同的應用場景下具有各自的優(yōu)勢和局限性。 應用場景 :適用于需要靈活的數(shù)據(jù)模型和豐富的查詢能力的場景,如內(nèi)容管理系統(tǒng)、實時分析等。 優(yōu)點 :靈活的數(shù)據(jù)模型,支持復雜的數(shù)據(jù)結(jié)構(gòu)和查詢。水平擴

    2024年01月25日
    瀏覽(18)
  • 四大常用MQ的優(yōu)缺點和應用場景選擇

    四大常用MQ的優(yōu)缺點和應用場景選擇

    ? 官網(wǎng)地址 :http://activemq.apache.org/ - 官網(wǎng)介紹 Apache ActiveMQ是最流行的開源、多協(xié)議、基于Java的消息代理。它支持行業(yè)標準協(xié)議,因此用戶可以從多種語言和平臺的客戶端選擇中獲益。從JavaScript、C、C++、Python、.NET等多個客戶端連接。使用無處不在的AMQP協(xié)議集成多平臺應用程

    2023年04月22日
    瀏覽(19)
  • ext3 文件系統(tǒng)的特點、優(yōu)缺點以及使用場景

    ext3(Third Extended File System)是 ext2 文件系統(tǒng)的后續(xù)版本,它在 ext2 文件系統(tǒng)的基礎上增加了日志功能,以提高文件系統(tǒng)的可靠性和穩(wěn)定性。下面是 ext3 文件系統(tǒng)的特點、優(yōu)缺點以及使用場景: 特點: ext3 文件系統(tǒng)是 ext2 文件系統(tǒng)的升級版本,具有兼容性好、穩(wěn)定可靠等優(yōu)點,

    2024年02月03日
    瀏覽(24)
  • Apache和Nginx的優(yōu)缺點及各自使用的場景

    Apache和Nginx是兩個常見的Web服務器,它們在性能、架構(gòu)設計和適用場景上有一些不同之處。 Apache: 優(yōu)點: 模塊豐富: Apache支持大量的第三方模塊,提供了很大的靈活性和可擴展性。 .htaccess 文件: Apache允許使用.htaccess文件進行配置,使得配置更加靈活,而無需修改主配置文

    2024年01月21日
    瀏覽(25)
  • 簡述 TCP 和 UDP 的區(qū)別以及優(yōu)缺點和使用場景?

    1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接 2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數(shù)據(jù),無差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,即不保證可靠交付。Tcp通過校驗和,重傳控制,序號標識,

    2024年02月11日
    瀏覽(20)
  • 淺談 ext2 文件系統(tǒng)的特點、優(yōu)缺點以及使用場景

    ext2(Extended File System 2)是 Linux 中最早的一種文件系統(tǒng),它是 Linux 文件系統(tǒng)的基礎,也被廣泛用于其他類 Unix 系統(tǒng)中。下面是 ext2 文件系統(tǒng)的特點、優(yōu)缺點以及使用場景: 特點: ext2 文件系統(tǒng)可以支持大容量的存儲設備,最大支持 32 TB 的文件系統(tǒng)大小。 ext2 文件系統(tǒng)使用塊

    2024年02月03日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包