機器學習 分類演算法 k近鄰演算法(KNN)No 8

2021-10-03 11:43:14 字數 2690 閱讀 2812

如果乙個樣本在特徵空間中的k

個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。最早是由cover和hart提出的一種分類演算法。

k近鄰演算法需要對資料做標準化處理

4、案例:**入住位置

(1)資料:

(2)資料處理

特徵值:xy座標,定位準確性,時間;目標值:入住位置的id(分類問題)

座標處理:縮小座標值。時間戳轉換成年月日格式時間,作為新的特徵。

目標值資料太大,影響**結果,減少資料。

(3)示例**

from sklearn.neighbors import kneighborsclassifier

from sklearn.model_selection import train_test_split

import pandas as pd

from sklearn.preprocessing import standardscaler

def knncls():

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

:return: none

'''# 讀取資料

data = pd.read_csv("c:\\users\\administrator\\desktop\\機器學習\\train.csv")

# 處理資料

# 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')

# 把日期格式轉換成字典格式

time_value = pd.datetimeindex(time_value)

# 構造特徵

data['day'] = time_value.day

data['hour'] = time_value.hour

data['weekday'] = time_value.weekday

# 刪除原有時間戳特徵(按列刪除,pandas中用1表示列)

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

# 刪除無用row_id

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

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

place_count = data.groupby('place_id').count()

tf = place_count[place_count.row_id>3].reset_index()

data = data[data['place_id'].isin(tf.place_id)]

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

y = data['place_id']

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

# 分割訓練集和測試集

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

# 特徵工程(標準化)

std = standardscaler()

# 對測試集合訓練集的特徵值進行標準化

x_train = std.fit_transform(x_train)

x_test = std.fit_transform(x_test)

# 進行演算法流程

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_test))

return none

if __name__ == "__main__":

knncls()

(4)案例流程

4、k近鄰演算法總結

(1)k值取多大?有什麼影響?

k值取很小:容易受異常點影響

k值取很大:容易受k值數量波動影響**率

(2)效能問題

資料量過大,效能受影響

(3)優缺點

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

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

機器學習 k近鄰演算法(分類電影)

案例 利用k近鄰演算法判斷電影類別。假設有如下資料,判斷新電影 打鬥鏡頭24,接吻鏡頭67 應該屬於愛情片還是動作片。繪製圖表如下 k 近鄰演算法步驟如下 1 計算已知類別資料集中的點與當前點之間的距離 2 按照距離遞增次序排序 3 選取與當前點距離最小的k個點 4 確定前k個點所在類別的出現頻率 ...

《機器學習實戰》 k近鄰分類演算法kNN

knn全稱為k nearest neighbors,是模式識別中比較簡單的一種演算法,可以用於分類和回歸。使用時,輸入的訓練樣本帶有標籤,輸出根據是用於分類還是回歸 分類問題的輸出為 找出k個和要 物件最近鄰的樣本,這k個樣本中,大多數 屬於哪一類即為 物件的分類標籤。回歸問題的輸出為 找出k個和回...