簡易kmeans c 版本

2022-09-08 20:45:20 字數 2571 閱讀 8582

typedef

double dtype;

主要介面:

void kmeans(const

vector

> &d,int k,string distype,vector

> &kset,map

&category,vector

> &kcenter)

引數:vector

> &d: 資料矩陣mxn

int k:聚類類別數目

string distype:距離類別,"sqeuclidean"表示歐式距離,"cosine"表示余弦距離,"hamming"表示海明距

vector

> &kset:初始化k個中心

map &category:返回的類別號

vector

> &kcenter:返回的類別中心

double sse(const

vector

> &matrix,const

vector

> &kcenter,map

&category,string distype,map

&everysse)

返回總的誤差平方和,map

&everysse返回每個類的誤差平方和

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

intconst n = 1000;

intconst eps = 1e-3;

using

namespace

std;

typedef

double dtype;

typedef

vector

::size_type vt;

double disfun(const

vector

&a,const

vector

&b,string distype)

if(distype=="cosine")

dis_sum = 1-in_product*1.0/(sqrt(len_a)*sqrt(len_b));

}if(distype=="hamming")

dis_sum = count*1.0/a.size();

}return dis_sum;

}vector

random_choosek(const

int n,int k)

}for(int &i:vec)cout

<"->";

cout

<<"random choose k over"

} bool nochange(const

vector

> &kcenter,const

vector

> &prekcenter)

return

true;

}vector

sum_vector(const

vector

&a,const

vector

&b)void setzero(vector

&vec)

}void alterkcenter(const

vector

> &d,vector

> &kcenter,const

vector

> &kset,string distype)

}}void kmeans(const

vector

> &d,int k,string distype,vector

> &kset,map

&category,vector

> &kcenter)

cout

<<"kset"

<<"kset over"

int count=0;

while(!flag)

return totalsse;

}void s**eresult(const

vector

> &matrix,vector

> &kset)

matrix.push_back(row);

all++;

}//printmatrix(matrix);

vector

> kset;

vector

> kcenter;

map category;

string st("hamming");

kmeans(matrix,30,st,kset,category,kcenter);

s**eresult(matrix,kset);

map everysse;

cout

:: const_iterator it=everysse.begin();

while(it!=everysse.end())

Css Position定位 簡易版本

準備前的知識 定位只對塊級起作用。如div,p等元素是塊級元素,如果是內聯元素則可以先變成塊級元素,display block即可。開始講解 定位共四種 static,fixed,relative,absolute.第一種 static為div預設,top,left,bottom,right無用。第...

簡易單鏈表模版(暫定最終版本)

自己寫的乙個單鏈表模版,模版的實現和定義是不可以分開兩個檔案寫的 和平時寫的類的不太一樣 這個要注意,一開始沒注意到這個 就出現了那個最討厭的 unresolve external symbol 的錯誤 下面是 功能是一些比較常見的功能 這個是經過修改完善後的乙個最終版本,以後有新想法 會再新增進去...

軟體版本號簡易控制規範

個人分類 研發管理和規範 版本控制規範用於確定軟體配置項的命名與版本號管理的規則,以確保清楚地 唯一地標識軟體的各個組成部分及其狀態,並建立這些部分之間的一致性關係。版本控制的範圍包括 源 用計算機程式語言編寫的源 檔案 文件 需求規格說明書 總體設計說明書 資料庫設計說明書 詳細設計說明書等描述軟...