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