字元的特徵向量放在txt檔案中,從檔案提取特徵向量實現分類
/*
* knn.
輸入:第一行輸入依次為:k(k<=10000),特徵向量的長度l(l<=100),訓練資料行數m(m>k, m<=10000),測試資料行數n(n<=10000)為測試資料行數。
之後是m行訓練資料和n行測試資料。每行中資料使用空格分隔。
輸出:**類別
測試資料:
3 5 16 2
0.19 0.04 0.06 0.22 0.11 a
0.28 0.42 0.38 0.39 0.44 b
0.71 0.61 0.54 0.52 0.54 c
0.98 0.82 0.92 0.98 0.97 d
0.05 0.03 0.15 0.01 0.11 a
0.33 0.29 0.33 0.47 0.27 b
0.72 0.52 0.61 0.71 0.68 c
0.78 0.86 0.91 1.0 0.76 d
0.01 0.17 0.14 0.15 0.2 a
0.44 0.36 0.32 0.32 0.35 b
0.67 0.65 0.57 0.58 0.52 c
0.87 0.92 0.8 0.83 0.77 d
0.01 0.11 0.14 0.12 0.07 a
0.33 0.43 0.43 0.45 0.38 b
0.57 0.54 0.75 0.7 0.64 c
0.9 0.94 0.83 0.96 0.77 d
0.29 0.29 0.42 0.36 0.27
0.56 0.67 0.71 0.66 0.7
輸出:bc*/
#include
#include
#include
#include
#include
#include
using
namespace
std;
struct sample ;
bool cmp(sample a, sample b)
void readtraindata(vector
> &traindata, vector
&trainlabel, int l, int m)
for (int i = 0; i < m; ++i)
traindata.push_back(linedata);
// 讀入訓練資料標註
char label;
infile>>label;
// cin >> label;
// cout}
infile.close(); //關閉檔案輸入流
}void readtestdata(vector
> &testdata,vector
&testlabel, int l, int n)
//讀測試資料
for (int i = 0; i < n; ++i)
testdata.push_back(linedata);
//讀取測試標註
infile>>tlabel;
// cin >> label;
cout
testlabel.push_back(tlabel);
}infile.close(); //關閉檔案輸入流
} double calcdistance(vector
data1, vector
data2)
void knn(vector
> traindata, vector
> testdata,
vector
trainlabel, vector
testlabel,int k, int m, int n)
sort(distances.begin(), distances.end(), cmp);//sort排序
// 選擇前k個樣本的距離,確定前k個點所在類別出現頻率。
map labelmap;
for (int j = 0; j < k; ++j)
// 找到labelmap中值最大的類別
int maxval = 0;
char reslabel;
for (map
::iterator it = labelmap.begin(); it != labelmap.end(); ++it)
if (it->second > maxval)
// 輸出類別。
cout
<< reslabel << endl;//測試
//識別率
x++;//單張字元識別率
if( testlabel[i] == reslabel)
if(x1==6)
//整張字元識別率
if( testlabel[i] == reslabel)
// cout<}
accuracy=d/n;
cout
<<"signal character accuracy is "
<< accuracy << endl;
allaccuracy=allaccuracy*6/n;
cout
<<"the whole picture recognition rate is "
<< allaccuracy << endl;
} int main()
碧秀分類程式 v1 4
碧秀分類程式採用.net4.0 sql2008架構,碧秀分類以簡潔的方式展示發布資訊,前台支援自定義模板,模板語法強大,並且具有很強大的擴充套件性,基本執行環境 net4.0及以上 mssql2005及以上 iis7及以上 install 資料夾為初始程式安裝資料夾,使用完後請自行刪除該資料夾 ap...
C 基於特徵向量的KNN分類演算法
k最近鄰 k nearest neighbor,knn 分類演算法,是乙個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的思路是 如果乙個樣本在特徵空間中的k個最相似 即特徵空間中最鄰近 的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。knn演算法中,所選擇的鄰居都是已經正確分...
C 基於特徵向量的KNN分類演算法
k最近鄰 k nearest neighbor,knn 分類演算法,是乙個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的思路是 如果乙個樣本在特徵空間中的k個最相似 即特徵空間中最鄰近 的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。knn演算法中,所選擇的鄰居都是已經正確分...