06 K 近鄰演算法

2022-02-20 08:54:23 字數 2218 閱讀 9732

定義: 如果乙個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一類別,則該樣本也屬於這個類別。

計算距離公式:歐式距離 (兩點之間距離)

需要做標準化處理,防止某一類特徵值權重過大

sklearn api

kaggle 案例**

分類:處理: 0

from sklearn.neighbors import kneighborsclassifier

from sklearn.preprocessing import standardscaler

from sklearn.model_selection import train_test_split

import pandas as pd

def knncls():

"""k-近鄰**使用者簽到位置

:return: none

"""# 讀取資料

data = pd.read_csv('./train.csv')

# print(data.head(10))

# 處理資料

# 1.縮小資料

data = data.query('x >1.0 & x < 1.25 & y > 2.5 & y < 2.75')

# 2. 處理時間資料

time_value = pd.to_datetime(data['time'], unit='s')

# print(time_value)

# 3. 構造一些特徵, 把日期格式轉換為字典格式

time_value = pd.datetimeindex(time_value)

data['day'] = time_value.day

data['weekday'] = time_value.weekday

data['hour'] = time_value.hour

# 4.把時間戳特徵刪除

data = data.drop(['time'],axis=1)

# print(data)

# 5.把簽到數量少於n個的目標位置刪除

place_count = data.groupby('place_id').count() # 統計place_id次數,變成行索引

tf = place_count[place_count.row_id > 3].reset_index() # row_id 具體次數,reset_index 把place_id生成新的一列

data = data[data['place_id'].isin(tf.place_id)] # 篩選place_id

# print(data)

# 6.取出資料中的特徵值和目標值

y = data['place_id']

x = data.drop(['place_id', 'row_id'], axis=1) # 去掉row_id 可以增加精度

# 7.分割訓練集和測試集

x_train, x_test, y_train, y_text = train_test_split(x, y, test_size=0.25)

# 8.特徵工程(標準化)

std = standardscaler()

x_train = std.fit_transform(x_train)

x_test = std.transform(x_test)

# 進行演算法流程 fit, predict, score #超引數

knn = kneighborsclassifier(n_neighbors=5)

knn.fit(x_train, y_train)

# 得出**結果

y_predict = knn.predict(x_test)

print('**的目標簽到位置為:', y_predict)

# 得出準確率

print('**的準確率為:', knn.score(x_test, y_text))

return none

if __name__ == '__main__':

knncls()

k值取多大,有什麼影響?

效能問題

優點: 簡單,易於理解實現,無需估計引數,無需訓練

缺點:使用場景:小資料(幾千~幾萬),基本不常用

機器學習 分類演算法 K 近鄰演算法06

k最近鄰 k nearest neighbor,knn 分類演算法,是乙個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的思路是 在特徵空間中,如果乙個樣本附近的k個最近 即特徵空間中最鄰近 樣本的大多數屬於某乙個類別,則該樣本也屬於這個類別。我們對應上面的流程來說 1.給定了紅色和藍...

k 近鄰演算法

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

K 近鄰演算法

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