共計 1215 個字符,預計需要花費 4 分鐘才能閱讀完成。
如何理解 R 語言分類算法中的距離判別,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
1. 距離判別原理分析
根據待判定樣本與已知類別樣本之間的距離遠近做出判斷. 根據已知類別樣本信息建立距離判別函數式, 再將各待判定樣本的屬性數據逐一代入式中計算, 得到距離值, 再根據此將樣本判入距離值最小的類別的樣本簇.
K 最近鄰算法則是距離判別法中使用最為廣泛的, 他的思路是如果 一個樣本在特征空間中的 K 個最相似 / 最相鄰的樣本中的大多數屬于某一個類別, 則該樣本也屬于這個類別.
圖中 3 個實心表示樣本點, 其周圍分布著若干分別用圓形, 三角形, 正方形空心點表示出的三種已知類別的樣本點. 現在我們取 K =5, 即圈出與待分類樣本點最相近的 5 個樣本點, 然后查看他們的類別. 這 5 個點中屬于哪個類別的樣本多, 該未知樣本就屬于哪個類別. 易得未知樣本 (從左到右) 依次屬于圓形, 三角形, 正方形.
K 最近鄰方法進行判別時, 由于其主要依靠周圍有限鄰近樣本的信息, 而不是靠判別類域的方法來確定所屬類別, 因此對于類域的交叉或重疊較多的待份樣本集來說, 該方法較其他方法更為合適.
2. 在 R 語言中的應用
在 K 最近鄰 (K-Nearest Neighbor,KNN) 算法中我們主要用到了 class 包里面的
knn(train,test,cl,k=1,1=0,prob=FALSE,use.all=TRUE)函數。
而在有權重的 k 最近鄰 (Weighted K-NearestNeighbor,KKNN) 我們主要用到了 kknn 包里的
kknn(formula=formula(train),train,test,na.action=na.omit(),k=7,distance=2,kernel=”optimal”,ykernel=NULL,scale=TRUE,contrasts=c(‘unordered’=”contr.dummy”,ordered=”contrl.rodinal”))函數。
3. 以 iris 數據集為例進行判別分析
1)應用模型并觀察輸出結果
library(kknn)
fit_pre_kknn=kknn(Species~.,data_train,data_test[,-5],k=5)fit_pre_kknn[1:length(fit_pre_kknn)]
2)檢測模型準確度
table(data_test$Species, fit_pre_kknn$fitted.values)
sum(as.numeric(as.numeric(fit_pre_kknn $fitted.values)!=as.numeric(data_test$Species)))/nrow(data_test)
看完上述內容,你們掌握如何理解 R 語言分類算法中的距離判別的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!