分類演算法 K 近鄰演算法(附案例及測試資料)

2021-10-03 19:49:36 字數 3035 閱讀 4073

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

兩個樣本的距離可以通過如下公式計算,又叫歐式距離

資料連線:

資料介紹:

train.csv,test.csv 

row_id:登記事件的id

xy:座標

準確性:定位準確性

place_id:業務的id,這是您**的目標

1、縮小資料集範圍 dataframe.query()

2、處理日期資料 pd.to_datetime pd.datetimeindex

3、增加分割的日期資料

4、刪除沒用的日期資料 dataframe.drop

5、將簽到位置少於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)]

from sklearn.model_selection import train_test_split

from sklearn.neighbors import kneighborsclassifier

from sklearn.preprocessing import standardscaler

import pandas as pd

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

"""# 1.讀取資料

data = pd.read_csv(

"./facebook-v-predicting-check-ins/train.csv"

)print

(data.head(10)

)#處理資料

# 1.縮小資料 比如 pladc_id 入住位置,每個都不一樣,但是可能某些位置就一兩個人,

# 查詢資料曬訊

data = data.query(

"x > 1.0 & x < 1.25 & y > 2.5 & y < 2.75"

)# 2.處理時間 -時間戳日期 1990-01-01 10:25:10

timevalue = pd.to_datetime(data[

'time'

], unit=

's')

# 把時間格式轉換成 字典格式

timevalue = pd.datetimeindex(timevalue)

# 構造特徵 加入時間的其它的特徵

data[

'day'

]= timevalue.day

data[

'hour'

]= timevalue.hour

data[

'weekday'

]= timevalue.weekday

# 把時間戳特徵刪除 pd裡1表示列 ske裡0表示列

data = data.drop(

['time'

], 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)

]# 3.取出特徵值和目標值 去除資料中的特徵值 和 目標值

y = data[

'place_id'

]x = data.drop(

['place_id'

], axis=1)

# 4.資料分割

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

0.25

)# 5. 標準化 - 特徵工程

std = standardscaler(

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

x_train = std.fit_transform(x_train)

x_test = std.fit_transform(x_test)

# 二 進行演算法流程

# k值:演算法傳入引數不定的值 理論上:k = 根號(樣本數)

# k值:後面會使用引數調優方法,去輪流試出最好的引數[1,3,5,10,20,100,200]

knn = kneighborsclassifier(n_neighbors=5)

# fit輸入資料 predict 估計 score準確率

knn.fit(x_train, y_train)

# **測試資料集,得出準確率

y_predict = knn.predict(x_test)

print

("**的目標簽到位置為:"

,y_predict)

# 得出**準確率

print

("**準確率:"

, knn.score(x_test, y_test)

)

準確率: 分類演算法的評估之一

k值取很大:受到樣本均衡的問題

分類演算法 k近鄰演算法

k最近鄰 k nearest neighbor,knn 分類演算法,是乙個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的思路是 如果乙個樣本在特徵空間中的k個最相似 即特徵空間中最鄰近 的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。用官方的話來說,所謂k近鄰演算法,即是給定...

分類演算法 K 近鄰演算法

如果乙個樣本在特徵空間中的k個最相似 即特徵空間中最鄰近 的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。兩個樣本的距離可以通過如下公式計算,又叫歐式距離 案例 from sklearn.datasets import load iris from sklearn.model selecti...

K近鄰(KNN) 分類演算法

k近鄰 knn 分類演算法 knn是non parametric分類器 不做分布形式的假設,直接從資料估計概率密度 是memory based learning.knn不適用於高維資料 curse of dimension machine learning的python庫很多,比如mlpy 更多pa...