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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

a*算法的优缺点_K-近邻算法以及案例

發(fā)布時(shí)間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 a*算法的优缺点_K-近邻算法以及案例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是K-近鄰算法(KNN)

根據(jù)鄰居判斷類型。如果一個樣本在特征空間中有K個最相似(距離相近)的樣本大多數(shù)屬于一個類別,則該樣品也屬于這個類別。

如何求距離呢?非常簡單,如圖。

a1,a2,a3代表樣本a的特征值 b1,b2,b3代表b的樣本值,根據(jù)公式可以計(jì)算出a和b兩個點(diǎn)的距離,各個特征值越相近,則距離越近。

K-近鄰算法需要做標(biāo)準(zhǔn)化。

k-近鄰算法的API(算法流程,無需考慮詳細(xì)數(shù)據(jù))

from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_splitimport pandas as pddata = pd.read_csv("路徑")# 縮小數(shù)據(jù)范圍 # data.query() 相當(dāng)于sql語句,寫條件,進(jìn)行篩選 data = data.query("x > 1.0 & x < 1.25") # 處理時(shí)間的數(shù)據(jù) pd.to_datetime time_value = pd.to_datetime(data['time'], unit='s') # 把日期格式轉(zhuǎn)換為字典數(shù)據(jù) time = pd.DatetimeIndex(time_value) # 構(gòu)造一些特征, data['day'] = time.day data['hour'] = time.hour data['weekday'] = time.weekday # sklearn 1表示列 data = data.drop(['time'], axis=1) # 把簽到數(shù)量少于n的目標(biāo)位置刪除 place_count = data.groupby('place_id').count() # reset_index() 把place_id當(dāng)做一個屬性,以便獲取到 tf = place_count[place_count.row_id > 3].reset_index()# 判斷是否存在包含關(guān)系 ,果果數(shù)據(jù)中的 place_id 不在 tf.place_id 中,被過濾 data = data[data['place_id'].isin(tf.place_id)] # 去處數(shù)據(jù)中的特征值和目標(biāo)值 y = data['place_id'] x = data.drop(['place_id'], axis=1) # 進(jìn)行訓(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() # 對測試集和訓(xùn)練集進(jìn)行標(biāo)準(zhǔn)化 x_train = std.fit_transform(x_train) # 因?yàn)榍懊嬉呀?jīng)fit一次了, fit會計(jì)算平均值和標(biāo)準(zhǔn)差,不用再計(jì)算一次,直接transform x_test = std.transform(x_test) # 進(jìn)行算法流程 knn = KNeighborsClassifier(n_neighbors=5) # fit ,predict,score fit = knn.fit(x_train, y_train) # 得出預(yù)測結(jié)果 y_predict = fit.predict(x_test) # 評估預(yù)測結(jié)果,得出準(zhǔn)確率 knn.score(x_test, y_test)

K-近鄰算法優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 簡單,易于理解,易于實(shí)現(xiàn),無需估計(jì)參數(shù)(超參數(shù)),無需訓(xùn)練。

缺點(diǎn):

  • K值取值 , K值取很小容易受異常點(diǎn)影響 , K取值很大 , 容易受數(shù)量波動影響。
  • 性能問題

總結(jié)

以上是生活随笔為你收集整理的a*算法的优缺点_K-近邻算法以及案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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