xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 3KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-08
  • 語言: 其他
  • 標簽: 聚類算法??源碼??

資源簡介

包括兩個文件,kmeans聚類算法cpp文件,和用于測試的鳶尾花數(shù)據(jù)集txt文件,代碼帶詳細注釋,簡潔明了,下載之后馬上可以進行測試

資源截圖

代碼片段和文件信息

#include???
#include???
#include???
#include???
#include???
#include???
#include?


using?namespace?std;

#define K 3 //簇的數(shù)目??
#define DIM_NUM 5
#define DATA_NUM 140



//存放元組的屬性信息??
typedef?vector?Tuple;//存儲一條數(shù)據(jù)記錄??


//輸入兩個元組,計算兩個元組間的歐幾里距離??
double?getDistXY(const?Tuple&?t1?const?Tuple&?t2)
{
double?sum?=?0;
for?(int?i?=?1;?i?<=?DIM_NUM;?++i)
{
sum?+=?(t1[i]?-?t2[i])?*?(t1[i]?-?t2[i]);
}
return?sqrt(sum);
}

//輸入k個質(zhì)心和1個元組,根據(jù)質(zhì)心,決定當前元組屬于哪個簇??
int?clusterOfTuple(const?Tuple?means[]?const?Tuple&?tuple){
double?dist?=?getDistXY(means[0]?tuple);
double?tmp;
int?label?=?0; //標示屬于哪一個簇??

for?(int?i?=?1;?i {
tmp?=?getDistXY(means[i]?tuple);
if?(tmp {?
dist?=?tmp;?
label?=?i;?
}
}
return?label;
}

//輸入簇集和質(zhì)心,獲得給定簇集的平方誤差??
double?getVar(vector?clusters[]?Tuple?means[])
{
double?var?=?0;
for?(int?i?=?0;?i? {
vector?t?=?clusters[i];
for?(unsigned?int?j?=?0;?j {
var?+=?getDistXY(t[j]?means[i]); //簇集中所有元組到質(zhì)心的距離之和
}
}
//cout<<“sum:“< return?var;

}

//輸入簇,獲得當前簇的均值(質(zhì)心)??
Tuple?getMeans(const?vector&?cluster)
{

int?num?=?cluster.size();
Tuple?t(DIM_NUM?+?1?0); //初始化dimNum?+?1個0填充數(shù)組
//第一個位置存放記錄編號,第2到dimNum+1個位置存放實際元素??
for?(int?i?=?0;?i? {
for?(int?j?=?1;?j?<=?DIM_NUM;?++j)
{
t[j]?+=?cluster[i][j];
}
}
for?(int?j?=?1;?j?<=?DIM_NUM;?++j)
{
t[j]?/=?num;
}
return?t; //返回簇集中所有元組平均值作為質(zhì)心
//cout<<“sum:“<}


void?print_Means(const?vector?clusters[])
{

for?(int?lable?=?0;?lable? {
cout?< Tuple?temp?=?getMeans(clusters[lable]);

cout?< for?(int?j?=?0;?j?<=?DIM_NUM;?++j)
{
cout?< }
cout?< }
}

void?print(const?vector?clusters[])
{
for?(int?lable?=?0;?lable {
cout?<

vector?t?=?clusters[lable];
for?(unsigned?int?i?=?0;?i {
cout?< for?(int?j?=?0;?j?<=?DIM_NUM;?++j)
{
cout?< }
cout?< }
}

}

vector*?KMeans(vector&?tuples)
{
vector?clusters[K]; //k個簇??
Tuple?means[K]; //k個質(zhì)心??

int?i?=?0;
//一開始隨機選取k條記錄的值作為k個簇的質(zhì)心(均值)??
srand((unsigned?int)time(NULL)); //隨機數(shù)發(fā)生器的初始化
for?(i?=?0;?i {
int?iToSelect?=?rand()?%?tuples.size();
if?(means[iToSelect].size()?==?0)
{
for?(int?j?=?0;?j?<=?DIM_NUM;?++j)
{
means[i].push_back(tuples[iToSelect][j]); //初始化個質(zhì)心
}
++i;
}
}

int?lable?=?0;
//根據(jù)默認的質(zhì)心,將輸入的tuples分配給各個簇??
for?(i?=?0;?i?!=?tuples.size();?++i)
{
lable?=?clusterOfTuple(means?tuples[i]);
clusters[lable].push_back(tuples[i]);

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

?????文件???????2660??2016-06-16?22:44??iris_train.txt

?????文件???????4872??2017-08-23?11:20??Source.cpp

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

?????????????????7532????????????????????2


評論

共有 條評論