欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

knn算法java代碼 java knn算法

K-近鄰算法簡介

1.K-近鄰(KNearestNeighbor,KNN)算法簡介 :對于一個未知的樣本,我們可以根據(jù)離它最近的k個樣本的類別來判斷它的類別。

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設(shè)計、網(wǎng)站制作與策劃設(shè)計,無錫網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:無錫等地區(qū)。無錫做網(wǎng)站價格咨詢:18982081108

以下圖為例,對于一個未知樣本綠色小圓,我們可以選取離它最近的3的樣本,其中包含了2個紅色三角形,1個藍色正方形,那么世喊我們可以判斷綠色小圓屬于紅色三角形這一類。

我們也可以選取離它最近的5個樣本,其中包含了3個藍色正方形,2個紅色三角形,那么我們可以判斷綠色小圓屬于藍色正方形這一類。

3.API文檔

下面我們來對KNN算法中的參數(shù)項做一個解釋說明:

'n_neighbors':選取的參考對象的個數(shù)(鄰居個數(shù)),默認值為5,也可以自己指定數(shù)值,但不是n_neighbors的值越大分類效果越好,最佳值需要我們做一個驗證。

'weights': 距離的權(quán)重參數(shù),默認uniform。

'uniform': 均勻的權(quán)重,所有的點在每一個類別中的權(quán)重是一樣的。簡單的說,就是每個點的重要性都是一樣的。

'distance':權(quán)重與距離的倒數(shù)成正比,距離近的點重要性更高,對于結(jié)果的影響也更大。

'algorithm':運算方法,默認auto。

'auto':根絕模型fit的數(shù)據(jù)自動選擇最合適的運算方法。

'ball_tree':樹模型算法BallTree

'kd_tree':樹模型算法KDTree

'brute':暴力算法

'leaf_size':葉子的尺寸,默認30。只有當algorithm = 'ball_tree' or 'kd_tree',這個參數(shù)需要設(shè)定。

'p':閔可斯基距離,當p = 1時,選擇曼哈頓距離;當p = 2時,選擇歐式距離。

n_jobs:使用計算機處理器數(shù)目,默認為1。當n=-1時,使用所有的處理器進行運算。

4.應(yīng)用案例演示

下面以Sklearn庫中自帶的數(shù)據(jù)集--手寫數(shù)字識別數(shù)據(jù)集為例,來測試下kNN算法。上一章,我們簡單的介紹了機器學習的一般步驟:加載數(shù)據(jù)集 - 訓練模型 - 結(jié)果預(yù)測 - 保存模型。這一章我們還是按照這個步驟來執(zhí)行。

[手搜笑野寫數(shù)字識別數(shù)據(jù)集]

5.模型的方法

每一種模型都有一些它獨有的屬性方法(模型的技能,能做些什么事),下面我們來了解下knn算法常用的的屬性方法。

6.knn算法的優(yōu)缺點

優(yōu)點:

簡單,效果還不錯,升攔適合多分類問題

缺點:

效率低(因為要計算預(yù)測樣本距離每個樣本點的距離,然后排序),效率會隨著樣本量的增加而降低。

用kNN算法診斷乳腺癌

乳腺癌數(shù)據(jù)包括569例細胞活檢案例,每個案例有32個特征。

第一個特征是識別號碼,

第二個特征是癌癥診斷結(jié)果(癌癥診斷結(jié)果用編碼“M”表示惡性,用編碼“B”表示良性),

其他30個特征是數(shù)值型的實驗室測量結(jié)果。(其他30個數(shù)值型測量結(jié)果由數(shù)字化細胞核的10個不同特征的均值、標準差和最差值(即最大值)構(gòu)成)。這些特征包括:

Radius(半徑)、Texture(質(zhì)地)、Perimeter(周長)、Area(面積)、Smoothness(光滑度)、Compactness(致密性)、Concavity(凹度)、Concave points(凹點)、Symmetry(對稱性)、Fractal dimension(分形維數(shù))

最終的數(shù)據(jù)為:

可以得到有357個為良性,有212個為惡性 因為id列沒有意義,去掉id列

并將目標屬性編碼因子化B良性M惡性

并計算各自占比

round四舍五入round(x,digits=n)

prop.table得到邊緣概率prop.table(x,margin=null)

通過summary詳細地觀察3個特征:可以看出不同特征的度量值差別大

kNN的距離計算在很大程度上依賴于輸入特征的測量尺度。由于光滑度的范圍是0.05~0.16,且面積的范圍是143.5~2501.0,所以在距離計算中,面積的影響比光滑度的影響大很多,這可能潛在地導(dǎo)致我們的分類器出現(xiàn)問題,所以我們應(yīng)用min-max標準化畝配卜方法將特征值重新調(diào)整到一個標準范圍內(nèi),對數(shù)據(jù)通過歸一化來進行無量綱處理

即顯然數(shù)據(jù)需要轉(zhuǎn)換,轉(zhuǎn)換函數(shù)為:

我們并不需要對這30個數(shù)值變量逐個進行min-max標準化,這里可以使用R中的一個函數(shù)來自動完成此過程

lapply()函數(shù)接受一個列表作為輸入?yún)?shù),然后把一個具體函數(shù)應(yīng)用到每一個列表元素。因為數(shù)據(jù)框是一個含有等長度向賣液量的列表,所以我們可以使用lapply()函數(shù)將normalize()函數(shù)應(yīng)用到數(shù)據(jù)框中的每一個特征。最后一個步驟是,應(yīng)用函數(shù)as.data.frame()把lapply()返回的列表轉(zhuǎn)換成一個數(shù)據(jù)框迅穗。過程如下所示:

這里使用的后綴_n是一個提示,即wdbc中的值已經(jīng)被min-max標準化了。

為了確認轉(zhuǎn)換是否正確應(yīng)用,讓我們來看看其中一個變量的匯總統(tǒng)計量:

正如預(yù)期的那樣,area_mean變量的原始范圍是143.5~2501.0,而現(xiàn)在的范圍是0~1。

接下來需要切分數(shù)據(jù)集,實際需要構(gòu)造training、validation、test,其中validation用來校正提高模型準確性,為簡單起見,我們只用train和test

第一種方法:由于我們沒有新病人的數(shù)據(jù),所以使用前469條記錄作為訓練數(shù)據(jù)集,剩下的100條記錄用來模擬新的病人

第二種方法:如果樣本中的惡性腫瘤大部分分布在1,則將469作為訓練集就有很大問題,此時采用隨機取樣

第三種方法:直接利用"caret"包中的crateDataPartition函數(shù)可自動分區(qū)

構(gòu)建模型,class包中的knn函數(shù),由于訓練數(shù)據(jù)集含有469個實例,所以我們可能嘗試k = 21,它是一個大約等于469的平方根的奇數(shù)。根據(jù)二分類的結(jié)果,使用奇數(shù)將消除各個類票數(shù)相等這一情況發(fā)生的可能性。

函數(shù)knn()返回一個因子向量,為測試數(shù)據(jù)集中的每一個案例返回一個預(yù)測標簽,我們將該因子向量命名為wdbc_test_pred。

現(xiàn)在,我們可以使用knn()函數(shù)對測試數(shù)據(jù)進行分類:

該過程的下一步就是評估wdbc_test_pred向量中預(yù)測的分類與wdbc_test_labels向量中已知值的匹配程度如何。為了做到這一點,我們可以使用gmodels添加包中的CrossTable()函數(shù),它在第2章中介紹過。如果你還沒有安裝該添加包,可以使用install.packages("gmodels")命令進行安裝。

在使用library(gmodels)命令載入該添加包后,可以創(chuàng)建一個用來標識兩個向量之間一致性的交叉表。指定參數(shù)prop.chisq = FALSE,將從輸出中去除不需要的卡方(chi-square)值,如下所示:

行為真實結(jié)果,列為預(yù)測結(jié)果,對角框的數(shù)字越小,模型越好

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

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

KNN算法,結(jié)果報錯,幫忙怎么改

knn算法(k-Nearest Neighbor algorithm).是一種經(jīng)典的分類算法.

注意,不是聚碼螞類算法.所以這種分類算法必然包括了訓練過程.

然而和一般性的分類算法不同,knn算法是一種 懶惰算法 .它并非

像其他的分類算法先通過訓練建立分類模型.,而是一種被動的分類

過程.它是逗帆邊測試邊訓山模雹練建立分類模型.

算法的一般描述過程如下:

1.首先計算每個測試樣本點到其他每個點的距離.

這個距離可以是歐氏距離,余弦距離等.

本文標題:knn算法java代碼 java knn算法
當前地址:http://chinadenli.net/article47/dsppcej.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計定制網(wǎng)站企業(yè)網(wǎng)站制作標簽優(yōu)化用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管