【机器学习】sklearn k-近邻算法
sklearn k-近鄰算法
- 1. sklearn k-近鄰算法API
- 2. k近鄰算法實例-預測入住位置
核心思想:你的“鄰居”來推斷出你的類別
定義:如果一個樣本在特征空間中的 k個最相似(即特征空間中最鄰近)的樣本中的大多數屬于某一個類別,則該樣本也屬于這個類別。
來源:KNN算法最早是由Cover和Hart提出的一種分類算法
如何求距離:計算距離公式
兩個樣本的距離可以通過如下公式計算,又叫歐式距離
比如說,a(a1,a2,a3),b(b1,b2,b3)
相似樣本,特征之間的值應該都是相近的。
sklearn k-近鄰算法是需要做標準化處理的。
1. sklearn k-近鄰算法API
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm='auto')n_neighbors:int,可選(默認= 5),k_neighbors查詢默認使用的鄰居數 algorithm:{‘auto’,‘ball_tree’,‘kd_tree’,‘brute’},可選用于計算最近鄰居的算法:‘ball_tree’將會使用 BallTree,‘kd_tree’將使用 KDTree?!產uto’將嘗試根據傳遞給fit方法的值來決定最合適的算法。 (不同實現方式影響效率)k值取值:會影響結果。
2. k近鄰算法實例-預測入住位置
數據來源
確定此問題是一種分類問題:
特征值:x,y坐標, 定位準確性,年,日,時,周 目標值:入住位置的ID
處理:0<x<10 0<y<10
1.由于數據量大,為了縮小數據量,縮小x,y
2.時間戳處理(年、月、日、周、時、分、秒),當做新的特征
3.幾千幾萬,少于指定簽到人數的位置刪除
數據的處理
1、縮小數據集范圍
DataFrame.query()
2、處理日期數據
pd.to_datetime
pd.DatetimeIndex
3、增加分割的日期數據
4、刪除沒用的日期數據**
pd.drop
5、將簽到位置少于n個用戶的刪除
place_count =data.groupby(‘place_id’).aggregate(np.count_nonzero)tf = place_count[place_count.row_id > 3].reset_index()
data = data[data[‘place_id’].isin(tf.place_id)]
k-近鄰算法優缺點
優點:
簡單,易于理解,易于實現,無需估計參數,無需訓練
缺點:
懶惰算法,對測試樣本分類時的計算量大,內存開銷大
必須指定K值,K值選擇不當則分類精度不能保證
1、k值取多大?有什么影響?
k值取很小:容易受異常點影響
k值取很大:容易受最近數據太多導致比例變化
總結
以上是生活随笔為你收集整理的【机器学习】sklearn k-近邻算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 噪声产生原因_空调噪声大?啄木鸟家庭维修
- 下一篇: c语言分治算法求最大值,分治法找最大值(