• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: C/C++
  • 标签: K-means  

资源简介

实现了把n个二维向量聚类,聚成m个部分,仅供参考。

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#include
using namespace std;

//把m个点分成n类
int nm;
int avxavyNodenum;
int flag;
double dist;
double mindist;
struct node{
    double x;
    double y;
};

typedef list NODELIST;


double culdist(node anode b){
    return sqrt( (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y) );
}

int main(){

    ifstream in(“kmeans.txt“);

    in>>n;
    in>>m;

    NODELIST init;
    NODELIST::iterator i;
    double XY;
    while(!(m--)){
        in>>X>>Y;
        node temNode;
        temNode.x = X;
        temNode.y = Y;
        init.push_back(temNode);
    }



    list K_means;
    list::iterator jminj;
    NODELIST temList;
    flag = 0;
    while(1){
        //算中心
        if(flag == 0){
            i = init.begin();
            for(int q=1;q<=n;++q){
                temList.push_back(*i);
                K_means.push_back(temList);
                ++i;
            }
            flag = 1;
        }
        else{
            flag = 0;
            node temnode;
            for(j=K_means.begin();j!=K_means.end();++j){
                avx = avy = 0;
                Nodenum = 0;
                while((*j).size()>1){//计算算新的中心
          

评论

共有 条评论