日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习算法基础——k近邻算法

發(fā)布時間:2025/3/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习算法基础——k近邻算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

23.k-近鄰算法以及案例預(yù)測入住位置

24.K-近鄰算法案例

分類算法-k近鄰算法(KNN)

定義:如果一個樣本在特征空間中的k個最相似(即特征空間中最鄰近)的樣本中的大多數(shù)屬于某一個類別,則該樣本也屬于這個類別。?

sklearn k-近鄰算法API

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm='auto')

  • n_neighbors:int,可選(默認(rèn)= 5),k_neighbors查詢默認(rèn)使用的鄰居數(shù)
  • algorithm:{‘a(chǎn)uto’,‘ball_tree’,‘kd_tree’,‘brute’},可選用于計算最近鄰居的算法:‘ball_tree’將會使用 BallTree,‘kd_tree’將使用 KDTree。‘a(chǎn)uto’將嘗試根據(jù)傳遞給fit方法的值來決定最合適的算法。 (不同實現(xiàn)方式影響效率)

k近鄰算法實例-預(yù)測入住位置

from sklearn.neighbors import KNeighborsClassifier import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler def knncls():#讀取收據(jù)data = pd.read_csv("/Users/zhucan/Downloads/facebook-v-predicting-check-ins/train.csv")#處理數(shù)據(jù)data.query("x > 1.0 & x < 1.25 & y > 2.5 & y < 2.75")time_value = pd.to_datetime(data["time"],unit="s")#把日期格式轉(zhuǎn)換成字典格式time_value = pd.DatetimeIndex(time_value)#構(gòu)造一些特征data["day"] = time_value.daydata["hour"] = time_value.hourdata["weekday"] = time_value.weekdaydata = data.drop(["time"],axis = 1)#把簽到數(shù)量少于n個目標(biāo)位置刪除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)]#取出數(shù)據(jù)當(dāng)中的特征值和目標(biāo)值y = data["place_id"]x = data.drop(["place_id"] , axis=1)#進(jìn)行數(shù)據(jù)的分割訓(xùn)練集和測試集x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.25)#特征工程(標(biāo)準(zhǔn)化)std=StandardScaler()#對特征值進(jìn)行標(biāo)準(zhǔn)化x_train = std.fit_transform(x_train)x_test = std.transform(x_test)#算法流程knn = KNeighborsClassifier(n_neighbors=5)knn.fit(x_train,y_train)y_predict = knn.predict(x_test)print("預(yù)測的目標(biāo)簽到位置為:", y_predict)print("預(yù)測的準(zhǔn)確率",knn.score(x_test,y_test))knncls()

25.k-近鄰算法總結(jié)

k值取多大?有什么影響?

  • k值取很小:容易受異常點影響
  • k值取很大:容易受最近數(shù)據(jù)太多導(dǎo)致比例變化

k-近鄰算法優(yōu)缺點

  • 優(yōu)點: 簡單,易于理解,易于實現(xiàn),無需估計參數(shù),無需訓(xùn)練
  • 缺點: 懶惰算法,對測試樣本分類時的計算量大,內(nèi)存開銷大 必須指定K值,K值選擇不當(dāng)則分類精度不能保證
  • 使用場景:小數(shù)據(jù)場景,幾千~幾萬樣本,具體場景具體業(yè)務(wù)去測試

總結(jié)

以上是生活随笔為你收集整理的机器学习算法基础——k近邻算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。