k最近鄰(k-nearest neighbor,knn)分類演算法,是乙個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的思路是:在特徵空間中,如果乙個樣本附近的k個最近(即特徵空間中最鄰近)樣本的大多數屬於某乙個類別,則該樣本也屬於這個類別。
我們對應上面的流程來說
1.給定了紅色和藍色的訓練樣本,綠色為測試樣本
2.計算綠色點到其他點的距離
3.選取離綠點最近的k個點
4.選取k個點中,同種顏色最多的類。例如:k=1時,k個點全是藍色,那**結果就是class 1;k=3時,k個點中兩個紅色乙個藍色,那**結果就是class 2
:# k-近鄰**使用者簽到位置
# 1,讀取資料
data = pd.read_csv(
"train.csv"
)# print(data.head(10))
#,2,處理資料
# 縮小資料,查詢資料篩選
data = data.query(
"x > 1.0 & x <1.25 & y >2.5 & y < 2.75"
)# 處理時間資料
time_value = pd.to_datetime(data[
"time"
],unit=
"s")
# print(time_value)
# 把日期格式轉換成字典格式
time_value = pd.datetimeindex(time_value)
# 3,構造一些特徵
data[
"day"
]= time_value.day
data[
"hour"
]= time_value.hour
data[
"weekday"
]= time_value.weekday
# 把時間戳特徵刪除
data = data.drop(
["time"
],axis=1)
# sklearn中1表示列和pandas不一樣
# print(data)
#把簽到數量少於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)
] data = data.drop(
["row_id"
],axis=1)
(data)
# 取出資料當中的特徵值和目標值
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.transform(x_test)
# 進行演算法流程
knn = kneighborsclassifier(n_neighbors=5)
# fit,predict,score
knn.fit(x_train,y_train)
# 得出**結果
y_predict = knn.predict(x_test)
("**的目標簽到位置為:"
,y_predict)
# 得出準確率
("**的準確率:"
,knn.score(x_test,y_test)
)if __name__==
"__main__"
: knncls(
)需調優提高準確度
機器學習 k近鄰演算法(分類電影)
案例 利用k近鄰演算法判斷電影類別。假設有如下資料,判斷新電影 打鬥鏡頭24,接吻鏡頭67 應該屬於愛情片還是動作片。繪製圖表如下 k 近鄰演算法步驟如下 1 計算已知類別資料集中的點與當前點之間的距離 2 按照距離遞增次序排序 3 選取與當前點距離最小的k個點 4 確定前k個點所在類別的出現頻率 ...
《機器學習實戰》 k近鄰分類演算法kNN
knn全稱為k nearest neighbors,是模式識別中比較簡單的一種演算法,可以用於分類和回歸。使用時,輸入的訓練樣本帶有標籤,輸出根據是用於分類還是回歸 分類問題的輸出為 找出k個和要 物件最近鄰的樣本,這k個樣本中,大多數 屬於哪一類即為 物件的分類標籤。回歸問題的輸出為 找出k個和回...
機器學習(二)k 近鄰分類演算法(kNN)
1 k 近鄰演算法概述 k 近鄰演算法採用 測量不同特徵值之間的距離的方法進行分類。優點 精度高 對異常值不敏感 無資料輸入假定 缺點 計算複雜度高 空間複雜度高 適用資料範圍 數值型和標稱型。2 工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每...