import pandas as pd
import numpy as np
def distance(v1, v2):
"""自實現距離計算
:param v1: 點v1
:param v2: 點v2
:return: 距離
"""# 法一
# ndim = len(v1)
# summary = 0
# for i in range(ndim):
# summary += (v1[i]-v2[i])**2
# dist = np.sqrt(summary)
# 法二
# 借助power進行距離計算
dist = np.sqrt(np.sum(np.power(v1-v2,2)))
return dist
def knn(train, k, test):
"""進行knn自實現
:param train: 訓練集
:param k: 取前幾個
:param test: 測試集
:return: 電影型別**的類別
"""# 進行相似度計算 ---》距離計算
index_num = train.shape[0]
for i in range(index_num):
dist = distance(train.iloc[i, 1:4], test[1:])
# print(dist)
train.ix[i, '歐氏距離'] = dist
train = train.sort_values(by='歐氏距離').iloc[:k, :]
# 對前k行進行眾數統計分析
# print(train['電影型別'].mode()[0])
# print(train)
return train['電影型別'].mode()[0]
# 載入資料
mov = pd.read_excel('電影分類資料.xlsx')
# print(mov)
train = mov.iloc[:, 1:6]
# print(train)
test = mov.columns[-4:]
test = np.array(test)
# print(test)
# 取前5個樣本
k = 5
# 進行knn自實現
y_predict = knn(train, k, test)
print('knn演算法**值:', y_predict)
KNN演算法原理
knn演算法的計算過程 knn演算法的優點和缺點 k最近鄰 k nearest neighbor,knn 演算法核心思想是如果乙個樣本在特徵空間中的k個最臨近的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。k通常是不大於20的整數。三要素為 k值的選取,距離度量的方式和分類決策規則。對於k值...
KNN演算法原理
k nearestneighbor,翻譯為k最近鄰演算法,是資料探勘演算法中最簡單的一種演算法。我們先用乙個例子體會下。我們很容易知道,這些電影的型別,那麼當有一部新電影出現的時候,可不可以對其進行自動分類了?我們可以把打鬥次數看成 x 軸,接吻次數看成 y 軸,然後在二維的座標軸上,對這幾部電影進...
KNN演算法原理與實現
knn k nearest neighbors 演算法不需要訓練過程,直接利用樣本之間的距離進行分類。演算法的基本過程是 給定乙個測試樣例,分別計算它與訓練集中所有樣本之間的距離,選取距離最小的k個訓練樣本對測試樣例的類別進行投票,最後將得票最多 在k個樣本中最多的類別 作為測試樣例的 類別。需要注...