K近鄰演算法

2021-09-05 12:32:01 字數 3941 閱讀 7154

import pandas as pd

import numpy as np

from sklearn.datasets import load_iris

import matplotlib.pyplot as plt

from sklearn.model_selection import train_test_split

from collections import counter

iris = load_iris(

)df = pd.dataframe(iris.data, columns=iris.feature_names)

df['label'

]= iris.target

df.columns =

['sepal length'

,'sepal width'

,'petal lenght'

,'petal width'

,'label'

]

# 繪畫出不同類別的鳶尾花的花萼寬度

-1]# 劃分訓練集與測試集

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=

0.2)

class

knn:

def__init__

(self, x_train, y_train, neighbors=

3, p=2)

:'''

neighbors 臨近點的個數

p=2 採用歐氏距離

'''self.n = neighbors

self.p = p

self.x_train = x_train

self.y_train = y_train

defpredict

(self, x)

:# 取出n個點

knn_list =

for i in

range

(self.n)

: dist = np.linalg.norm(x - self.x_train[i]

,ord

=self.p)

# knn_list儲存距離和類別值

(dist, self.y_train[i]))

for i in

range

(self.n,

len(self.x_train)):

# 取出最大的距離對應的index

max_index = knn_list.index(

max(knn_list, key=

lambda x:x[0]

))dist = np.linalg.norm(x - self.x_train[i]

,ord

=self.p)

# 如果最大的值大於當前距離,則將當前距離置於knn_list中

if knn_list[max_index][0

]> dist:

knn_list[max_index]=(

(dist, self.y_train[i]))

#統計# 取出最後一列值(類別值)

knn =

[k[-1]

for k in knn_list]

count_pairs = counter(knn)

# 以類別數最多的作為被分類的類別

k 近鄰演算法

此文章參考機器學習實戰一書,具體的理論知識可以參考該書。本文的初衷只是為了做乙個複習,將學過的知識加以整理,其中不免有一定的錯誤。2.k 近鄰演算法的原理介紹 k 近鄰演算法通過測量不同的特徵值之間的距離進行分類。它的工作原理如下 存在乙個樣本的資料集合,也成為訓練樣本集合。並且樣本集中的每個資料都...

K 近鄰演算法

k 近鄰演算法採用測量不同特徵值之間的距離方法進行分類。優點 精度高 對異常值不敏感 無資料輸入假定 缺點 計算複雜度高 空間複雜度高 適用資料範圍 數值型和標稱型 工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入...

K 近鄰演算法

首先,我們將 k 近鄰演算法的基本理論 其次我們將使用python從文字檔案中匯入並解析資料 再次,討論當存在許多資料 的時,如何避免計算距離時可能碰到的一些常見錯誤 最後,利用實際的例子講解如何使用k 近鄰演算法改進約會 1.1 knn演算法 工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且...