導航:首頁 > 編程語言 > knn演算法java

knn演算法java

發布時間:2022-09-14 19:26:56

㈠ 怎樣在spark里跑java版的knn算

1、將KNN演算法調用Spark的api進行重寫。
2、然後就可以在sparkshell里運行了

㈡ 什麼是knn演算法

作為一種非參數的分類演算法,K-近鄰(KNN)演算法是非常有效和容易實現的。它已經廣泛應用於分類、回歸和模式識別等。在應用KNN演算法解決問題的時候,要注意兩個方面的問題——樣本權重和特徵權重。利用SVM來確定特徵的權重,提出了基於SVM的特徵加權演算法(FWKNN,feature
weighted
KNN)。實驗表明,在一定的條件下,FWKNN能夠極大地提高分類准確率。

㈢ KNN演算法,k近鄰

K最近鄰(k-Nearest Neighbour,KNN)分類演算法,是一個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的思路是:如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。

㈣ 什麼是knn演算法

作為一種非參數的分類演算法,K-近鄰(KNN)演算法是非常有效和容易實現的。它已經廣泛應用於分類、回歸和模式識別等。在應用KNN演算法解決問題的時候,要注意兩個方面的問題——樣本權重和特徵權重。利用SVM來確定特徵的權重,提出了基於SVM的特徵加權演算法(FWKNN,feature weighted KNN)。實驗表明,在一定的條件下,FWKNN能夠極大地提高分類准確率。

㈤ 求KNN文本分類演算法java實現源代碼【散分了!!!!】

#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
#define NATTRS 5 //number of attributes
#define MAXSZ 1700 //max size of training set
#define MAXVALUE 10000.0 //the biggest attribute's value is below 10000(int)
#define K 5
struct vector {
double attributes[NATTRS];
double classlabel;
};
struct item {
double distance;
double classlabel;
};
struct vector trSet[MAXSZ];//global variable,the training set
struct item knn[K];//global variable,the k-neareast-neighbour set
int curTSize = 0; //current size of the training set
int AddtoTSet(struct vector v)
{
if(curTSize>=MAXSZ) {
cout<<endl<<"The training set has "<<MAXSZ<<" examples!"<<endl<<endl;
return 0;
}
trSet[curTSize] = v;
curTSize++;
return 1;
}
double Distance(struct vector v1,struct vector v2)
{
double d = 0.0;
double tem = 0.0;
for(int i = 0;i < NATTRS;i++)
tem += (v1.attributes[i]-v2.attributes[i])*(v1.attributes[i]-v2.attributes[i]);
d = sqrt(tem);
return d;
}
int max(struct item knn[]) //return the no. of the item which has biggest distance(
//should be replaced)
{
int maxNo = 0;
if(K > 1)
for(int i = 1;i < K;i++)
if(knn[i].distance>knn[maxNo].distance)
maxNo = i;
return maxNo;
}double Classify(struct vector v)//decide which class label will be assigned to
//a given input vetor with the knn method
{
double dd = 0;
int maxn = 0;
int freq[K];
double mfreqC = 0;//the class label appears most frequently
int i;
for(i = 0;i < K;i++)
knn[i].distance = MAXVALUE;
for(i = 0;i < curTSize;i++)
{
dd = Distance(trSet[i],v);
maxn = max(knn);//for every new state of the training set should update maxn
if(dd < knn[maxn].distance) {
knn[maxn].distance = dd;
knn[maxn].classlabel = trSet[i].classlabel;
}
}
for(i = 0;i < K;i++)//freq[i] represents knn[i].classlabel appears how many times
freq[i] = 1;
for(i = 0;i < K;i++)
for(int j = 0;j < K;j++)
if((i!=j)&&(knn[i].classlabel == knn[j].classlabel))
freq[i]+=1;
int mfreq = 1;
mfreqC = knn[0].classlabel;
for(i = 0;i < K;i++)
if(freq[i] > mfreq) {
mfreq = freq[i];//mfreq represents the most frepuences
mfreqC = knn[i].classlabel; //mfreqNo is the item no. with the most frequent
//classlabel
}
return mfreqC;
}
void main()
{ double classlabel;
double c;
double n;
struct vector trExmp;
int i;
ifstream filein("G:\\data\\for knn\\data.txt");
if(filein.fail()){cout<<"Can't open data.txt"<<endl; return;}
while(!filein.eof()) {
filein>>c;
trExmp.classlabel = c;
cout<<trExmp.classlabel<<" "; for(int i = 0;i < NATTRS;i++) {
filein>>n;
trExmp.attributes[i] = n;
cout<<trExmp.attributes[i]<<" ";
} cout<<endl;
if(!AddtoTSet(trExmp))
break;
}filein.close();struct vector testv={{142,188,11,1159,0.5513196},17};
classlabel = Classify(testv);
cout<<"The classlable of the testv is: ";
cout<<classlabel<<endl;
for(i = 0;i < K;i++)
cout<<knn[i].distance<<"\t"<<knn[i].classlabel<<endl;
//cout<<max(knn);
}

㈥ KNN演算法,結果報錯,幫忙怎麼改

knn演算法(k-Nearest Neighbor algorithm).是一種經典的分類演算法.
注意,不是聚類演算法.所以這種分類演算法必然包括了訓練過程.
然而和一般性的分類演算法不同,knn演算法是一種 懶惰演算法 .它並非
像其他的分類演算法先通過訓練建立分類模型.,而是一種被動的分類
過程.它是邊測試邊訓練建立分類模型.
演算法的一般描述過程如下:
1.首先計算每個測試樣本點到其他每個點的距離.
這個距離可以是歐氏距離,餘弦距離等.

㈦ 什麼叫做knn演算法

在模式識別領域中,最近鄰居法(KNN演算法,又譯K-近鄰演算法)是一種用於分類和回歸的非參數統計方法。

在這兩種情況下,輸入包含特徵空間(Feature Space)中的k個最接近的訓練樣本。

1、在k-NN分類中,輸出是一個分類族群。一個對象的分類是由其鄰居的「多數表決」確定的,k個最近鄰居(k為正整數,通常較小)中最常見的分類決定了賦予該對象的類別。若k=1,則該對象的類別直接由最近的一個節點賦予。

2、在k-NN回歸中,輸出是該對象的屬性值。該值是其k個最近鄰居的值的平均值。

最近鄰居法採用向量空間模型來分類,概念為相同類別的案例,彼此的相似度高,而可以藉由計算與已知類別案例之相似度,來評估未知類別案例可能的分類。

K-NN是一種基於實例的學習,或者是局部近似和將所有計算推遲到分類之後的惰性學習。k-近鄰演算法是所有的機器學習演算法中最簡單的之一。

無論是分類還是回歸,衡量鄰居的權重都非常有用,使較近鄰居的權重比較遠鄰居的權重大。例如,一種常見的加權方案是給每個鄰居權重賦值為1/ d,其中d是到鄰居的距離。

鄰居都取自一組已經正確分類(在回歸的情況下,指屬性值正確)的對象。雖然沒要求明確的訓練步驟,但這也可以當作是此演算法的一個訓練樣本集。

k-近鄰演算法的缺點是對數據的局部結構非常敏感。

K-均值演算法也是流行的機器學習技術,其名稱和k-近鄰演算法相近,但兩者沒有關系。數據標准化可以大大提高該演算法的准確性。

參數選擇

如何選擇一個最佳的K值取決於數據。一般情況下,在分類時較大的K值能夠減小雜訊的影響,但會使類別之間的界限變得模糊。一個較好的K值能通過各種啟發式技術(見超參數優化)來獲取。

雜訊和非相關性特徵的存在,或特徵尺度與它們的重要性不一致會使K近鄰演算法的准確性嚴重降低。對於選取和縮放特徵來改善分類已經作了很多研究。一個普遍的做法是利用進化演算法優化功能擴展,還有一種較普遍的方法是利用訓練樣本的互信息進行選擇特徵。

在二元(兩類)分類問題中,選取k為奇數有助於避免兩個分類平票的情形。在此問題下,選取最佳經驗k值的方法是自助法。

㈧ knn是什麼意思

作為一種非參數的分類演算法,K-近鄰(KNN)演算法是非常有效和容易實現的。它已經廣泛應用於分類、回歸和模式識別等。

在應用KNN演算法解決問題的時候,要注意兩個方面的問題——樣本權重和特徵權重。利用SVM來確定特徵的權重,提出了基於SVM的特徵加權演算法(FWKNN,featureweightedKNN)。實驗表明,在一定的條件下,FWKNN能夠極大地提高分類准確率。

(8)knn演算法java擴展閱讀:

KNN(K- Nearest Neighbor)法即K最鄰近法,最初由 Cover和Hart於1968年提出,是一個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的思路非常簡單直觀:

如果一個樣本在特徵空間中的K個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。該方法在定類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。

㈨ 為什麼在做KNN分類器時不用測試集也能得出分類結果

knn演算法(k-Nearest Neighbor algorithm).是一種經典的分類演算法.注意,不是聚類演算法.所以這種分類演算法必然包括了訓練過程.然而和一般性的分類演算法不同,knn演算法是一種 懶惰演算法 .它並非像其他的分類演算法先通過訓練建立分類模型.,而是一種被動的分類過程.它是邊測試邊訓練建立分類模型.演算法的一般描述過程如下:1.首先計算每個測試樣本點到其他每個點的距離.這個距離可以是歐氏距離,餘弦距離等.

㈩ knn演算法是什麼

KNN(K- Nearest Neighbor)法即K最鄰近法,最初由Cover和Hart於1968年提出,是一個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。

作為一種非參數的分類演算法,K-近鄰(KNN)演算法是非常有效和容易實現的。它已經廣泛應用於分類、回歸和模式識別等。

介紹

KNN演算法本身簡單有效,它是一種lazy-learning演算法,分類器不需要使用訓練集進行訓練,訓練時間復雜度為0。KNN分類的計算復雜度和訓練集中的文檔數目成正比,也就是說,如果訓練集中文檔總數為n,那麼KNN的分類時間復雜度為O(n)。

KNN方法雖然從原理上也依賴於極限定理,但在類別決策時,只與極少量的相鄰樣本有關。由於KNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對於類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更為適合。

閱讀全文

與knn演算法java相關的資料

熱點內容
壓縮因子定義 瀏覽:968
cd命令進不了c盤怎麼辦 瀏覽:214
葯業公司招程序員嗎 瀏覽:974
毛選pdf 瀏覽:659
linuxexecl函數 瀏覽:727
程序員異地戀結果 瀏覽:374
剖切的命令 瀏覽:229
干什麼可以賺錢開我的世界伺服器 瀏覽:290
php備案號 瀏覽:990
php視頻水印 瀏覽:167
怎麼追程序員的女生 瀏覽:487
空調外壓縮機電容 瀏覽:79
怎麼將安卓變成win 瀏覽:459
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:804
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328