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