91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-06
  • 語言: C/C++
  • 標簽: 模式識別??C++??

資源簡介

本程序為K均值分類法的代碼實現,可運行.采用C++編寫;模式識別

資源截圖

代碼片段和文件信息

#include?
#include?
using?namespace?std;
#?include?
#?include
typedef?struct?code?
{
float?x1;//x1,x2,x3,x4分別為4個特征
float?x2;
float?x3;
float?x4;

}CodeCodes[150];//元素的結構體
typedef?struct?G_code?
{
int?G[150];//該類中的點
int?count?;//該類中的元素個數

}G_CodeG_Codes[3];
G_Codes?gg;//當前的三個分類
Code?Z[3];//三個類的中心
Code?Z_last[3];//前一次分類的三個類的中心
int?K_count?=?0?;//迭代次數
Codes?cc;//記錄文件中的點
?void?average(?int?G_i?);//求新的聚類中心,G_i表示第i個類
?void?K_Classify(?);//按新的聚類中心分類,用于遞歸
?void?Classify();//分類
?int?div(?int?n?);//將第n個點分類至G_I類,并返回G_I
?bool?test();//判斷Z[3]與Z_last[3]是否相同
void?main()
{
fstream?file;
int?i?=?0??j?=?0?;
file.open(“Iris.txt“ios::in);
if(file.fail())
{
cout<<“文件打開失敗!“< exit(0);
}
//從文件中讀出各點
file>>cc[j].x1>>cc[j].x2>>cc[j].x3>>cc[j].x4;
j++?;
while(!file.eof())
{
file>>cc[j].x1>>cc[j].x2>>cc[j].x3>>cc[j].x4;
j++?;
}
file.close();
Classify();//開始分類
cout<<“循環迭代次數為:“< cout< for(?j?=?0?;?j? {
cout<<“第(“< cout<<“第(“< for(?i?=?0?;?i? {
cout< if(?(i+1)?%?13?==?0?)
cout< }
cout< cout< }
cin.get();
}
?void?Classify()//分類
?{
?int?i?;?
?int?ss[3]?=?{34445};
?for(?i?=?0?;?i ?{
?Z_last[i]?=?cc[ss[i]]?;
?gg[i].count?=?0?;
?}
?K_Classify();
?}
?void?K_Classify(?)//按新的聚類中心分類,遞歸調用
?{
?int?i?;
?int?G_I;//該點所屬類別
?K_count++?;//迭代次數增加
?for(?i?=?0?;?i? ?{
?G_I?=?div(?i?);//將第i個點分類
?gg[G_I].G[gg[G_I].count]?=?i??;
?gg[G_I].count++?;
?}
?for(?i?=?0?;?i? ?average(i);
?if(?test()?==?1?)//若兩次聚類中心相同則返回
?return?;
?else//若兩次聚類中心不相同則記錄本次聚類中心,進行下一輪迭代
?{
?for(?i?=?0?;?i ?{
?Z_last[i]?=?Z[i]?;
?gg[i].count?=?0?;
?}
?K_Classify();
?}
?}
int?div(?int?n?)//將第n個點分類至G_I類,并返回G_I
{
?float?dis[3];//該點到個聚類中心的距離的平方
?int?G_I;//該點屬于G_I類
?int??i?=?0?;
?for(??i?=?0?;?i? ?dis[i]?=sqrt(?(Z_last[i].x1?-?cc[n].x1)*(Z_last[i].x1?-?cc[n].x1)+(Z_last[i].x2?-?cc[n].x2)*(Z_last[i].x2?-?cc[n].x2)+(Z_last[i].x3?-?cc[n].x3)*(Z_last[i].x3?-?cc[n].x3)+(Z_last[i].x4?-?cc[n].x4)*(Z_last[i].x4?-?cc[n].x4?));
?G_I?=?0?;
?for(?i?=?1?;?i? ?if(?dis[G_I]?>?dis?[i])
?G_I?=?i?;
?return?G_I;
}
void?average(?int?G_i?)//求新的聚類中心,G_i表示第i個類
{
int?i?;?
Code?sum?;//坐標和
sum.x1?=?0.0?;
sum.x2?=?0.0?;
sum.x3?=?0.0?;
sum.x4?=?0.0?;
for(?i?=?0?;?i? {
sum.x1?+=?cc[gg[G_i].G[i]].x1?;
sum.x2?+=?cc[gg[G_i].G[i]].x2?;
sum.x3?+=?cc[gg[G_i].G[i]].x3?;
sum.x4?+=?cc[gg[G_i].G[i]].x4?;
}
Z[G_i].x1?=?sum.x1?/?(?float?)gg[G_i].count?;
Z[G_i].x2?=?sum.x2?/?(?float?)gg[G_i].count?;
Z[G_i].x3?=?sum.x3?/?(?float?)gg[G_

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????2548??2012-12-09?19:18??K_均值分類\Iris.txt

?????文件???????4328??2012-12-09?19:03??K_均值分類\K_均值分類.dsp

?????文件????????528??2012-12-09?18:52??K_均值分類\K_均值分類.dsw

?????文件??????50176??2013-10-22?21:05??K_均值分類\K_均值分類.ncb

?????文件??????53760??2013-10-22?21:05??K_均值分類\K_均值分類.opt

?????文件????????254??2013-10-22?21:05??K_均值分類\K_均值分類.plg

?????文件???????3886??2012-12-19?18:51??K_均值分類\mymain.cpp

?????目錄??????????0??2013-10-22?21:05??K_均值分類

-----------?---------??----------?-----??----

???????????????115480????????????????????8


評論

共有 條評論