如果乙個樣本在特徵空間中的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個和回...