中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解R語言中的KNN算法

發布時間:2021-11-22 09:22:59 來源:億速云 閱讀:285 作者:柒染 欄目:大數據

如何理解R語言中的KNN算法,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

k最臨近(KNN)算法是最簡單的分類算法之一,屬于有監督的機器學習算法。

  • 算法流程

KNN的核心思想是:找出特征空間中距離待分類點最近的k個點,如果這k個點大多數屬于某一個類別,則該樣本也屬于這個類別。

如何理解R語言中的KNN算法

k值一般取20以下的整數。下圖為從網上截取的圖片,可以直觀看到與點x最臨近的5個點里,有4個為紅色圓點,因此將點x的類別判斷為紅色圓點一類。

如何理解R語言中的KNN算法

  • R語言實現

在R中實現knn聚類,可以使用class包中點knn()函數。在下面的例子中,我們使用UCI的[乳腺癌特征數據集]進行演示。首先,讀入網上的數據:

#讀取網上的數據并設置變量名

url <- 'http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/wdbc.data'

wdbc.data <- read.csv(url,header = F)

names(wdbc.data) <- c('ID','Diagnosis','radius_mean','texture_mean','perimeter_mean',                'area_mean','smoothness_mean','compactness_mean','concavity_mean',

'concave points_mean','symmetry_mean','fractal dimension_mean','radius_sd','texture_sd','perimeter_sd','area_sd','smoothness_sd','compactness_sd','concavity_sd','concave points_sd','symmetry_sd','fractal dimension_sd','radius_max_mean','texture_max_mean','perimeter_max_mean','area_max_mean','smoothness_max_mean','compactness_max_mean','concavity_max_mean','concavepoints_max_mean','symmetry_max_mean','fractal dimension_max_mean')

因為有的變量取值大,有的變量取值小,所以我們在使用knn進行分類前,要先對數據通過歸一化來進行無量綱處理。

#編寫歸一化函數

normalize <- function(x) 

  return ((x-min(x))/(max(x)-min(x)))

}

#對數據進行歸一化

wdbc.data.min_max <- as.data.frame(lapply(wdbc.data[3:length(wdbc.data)],normalize))

wdbc.data.min_max$Diagnosis <- wdbc.data$Diagnosis

區分訓練集和測試集,并紀錄相應的分類標簽。

m<-(dim(wdbc.data.min_max))[1]

val<-sample(1:m,size=round(m/3),replace=FALSE,prob=rep(1/m,m))

data.train<-wdbc.data.min_max[-val,]

data.test<-wdbc.data.min_max[val,]

data.train.label<-data.train$Diagnosis

data.test.label<-data.test$Diagnosis

data.train<-wdbc.data.min_max[-val,- length(wdbc.data.min_max)]

data.test<-wdbc.data.min_max[val,- length(wdbc.data.min_max)]

用knn算法進行分類,并用實際的分類標簽與預測出的分類結果進行效果檢測。

library(class)

test.pre.labels <- knn(data.train,data.test,data.train.label,k=7)

library(gmodels)

CrossTable(x = data.test.label, y = test.pre.labels, prop.chisq = F)

檢測結果為:

如何理解R語言中的KNN算法

選取兩個變量作為橫縱坐標進行畫圖,觀察實際類別與預測的分類結果。

plot(data.test$texture_mean,data.test$radius_mean,col=test.pre.labels,pch=as.integer(data.test.label))

顏色代表分類后得到的結果,形狀代表真實的類別。從檢測結果和圖上都可以看出,分類結果基本與真實結果一致。

如何理解R語言中的KNN算法

  • KNN優缺點

優點

(1)算法原理簡單,無需估計參數和訓練。

(2)適合稀有事件的分類問題。

缺點

(1)計算量太大,需要計算與每個點的距離。

(2)可解釋性不強。

(3)樣本不平衡時,k個最近的點中,大容量類別的點占據了大多數,但大容量類別不一定為待分類點的真實類別。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

云南省| 安达市| 舞阳县| 咸丰县| 安岳县| 塔河县| 工布江达县| 青神县| 博客| 伊川县| 萨迦县| 安吉县| 武乡县| 安徽省| 灌阳县| 湄潭县| 拜城县| 固原市| 望都县| 微博| 卓尼县| 房产| 浮山县| 城固县| 凤庆县| 道孚县| 龙口市| 喀喇沁旗| 大理市| 苍溪县| 上犹县| 和硕县| 慈溪市| 张掖市| 永新县| 桃园市| 封丘县| 中山市| 凤庆县| 容城县| 龙游县|