機器學習(一)之KNN演算法

2022-08-03 01:42:13 字數 2177 閱讀 5315

①.計算機將計算所有的點和該點的距離

②.選出最近的k個點

③.比較在選擇的幾個點中那個類的個數多就將該點分到那個類中

knn演算法的優點:精度高,對異常值不敏感,無資料假設

knn演算法的缺點:時間複雜度和空間複雜度都比較高

1、當樣本不平衡時,比如乙個類的樣本容量很大,其他類的樣本容量很小,輸入乙個樣本的時候,k個臨近值中大多數都是大樣本容量的那個類,這時可能就會導致分類錯誤。改進方法是對k臨近點進行加權,也就是距離近的點的權值大,距離遠的點權值小。 

2、計算量較大,每個待分類的樣本都要計算它到全部點的距離,根據距離排序才能求得k個臨近點,改進方法是:先對已知樣本點進行剪輯,事先去除對分類作用不大的樣本。

注意:資料是二維的,第一維表示樣本,第二維表示特徵(如手寫數字演算法,)

標稱型:標稱型目標變數的結果只在有限目標集中取值,如真與假(標稱型目標變數主要用於分類)

數值型:數值型目標變數則可以從無限的數值集合中取值,如0.100,42.001等 (數值型目標變數主要用於回歸分析)

案例:import numpy as np

import pandas as pd

# kneighborsclassifer 用於分類問題的處理

from sklearn.neighbors import kneighborsclassifier

# 匯入資料:

#根據電影的武打鏡頭和接吻鏡頭的數量判斷電影的型別

#knn演算法是有監督學習,需要樣本訓練資料,和目標值進行對照

提取資料:

x = movie.iloc[:,1:3]

y = movie["分類情況"]

# 此時k值等於5,即5個鄰居

knn=kneighborsclassifier(n_neighbors=5)

# 訓練演算法:fit()

以x為訓練資料,y為目標值擬合模型

knn.fit(x,y)                   

#資料進行l訓練,已經建立了乙個分類標準

#新增2個樣本資料

x_text = pd.dataframe()                     

# 使用演算法**目標樣本的分類情況

knn.predict(x_text)   

**結果:

array(['動作片', '愛情片'], dtype=object)             

#從結果可以看出:第乙個樣本被劃分到動作片中,第二個樣本被劃分到愛情片中 

#對樣本進行估計被劃分到哪個類的概率

knn.predict_proba(x_text)                                 

估計結果結果:array([[0.6, 0.4], [0.4, 0.6]])

注意:knn演算法是根據距離遠近進行分類的劃分,k為最近的樣本。

給knn加權重,即weight = ["uniform","distance","calllable"]                 即:均衡、距離、自定義

如:knn=kneighborsclassifier(n_neighbors=5,weights="distance")

當我們對演算法進行了訓練之後,想要再次使用該演算法進行**時,就不需要再次進行演算法的訓練了,直接使用儲存的演算法,對需要進行分類的樣本進行分類就行

#演算法儲存

#應用模組

from sklearn.externals import joblib

#儲存樣本的方式:

joblib.dump(knn,filename = "./digit_detector.m") 

#filename後邊自定義字尾為m的檔名             

#演算法的載入

from sklearn.externals import joblib

#載入之前儲存的演算法

knn = joblib.load("./digit_detector.m")

機器學習之KNN演算法

在幾位志同道合的小夥伴的帶領下,開始了機器學習的路程,然而一切並不是想象的那麼簡單,因此本文記錄了自己的學習路程,希望還能堅持做好這件事。knn演算法是機器學習中屬於比較簡單的演算法,容易理解和閱讀。1.knn的應用 客戶流失 欺詐偵測等 更適合於稀有事件的分類問題 2.優缺點 優點 這是乙個簡單有...

機器學習演算法之KNN

物以類聚 人以群分,乙個例項與它周圍的例項屬於同一類的概率較大。給定乙個訓練資料集,對新輸入的例項,在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類,就把該輸入例項分為這個類。這裡,選用了歐氏距離,k的預設值為3,使用了sklearn提供的digits資料集來進行測試。inpu...

機器學習之kNN演算法

knn原理及實踐 1 演算法介紹 總的來說,機器學習入門的第乙個演算法是k 近鄰演算法 knn 它的工作原理是 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進...