K均值聚类(C++)
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
void kmeans(int n, float* xy, int k, float* cxy)
{
int i,j;
for(i=;i<k;i++)
{
cxy[*i]=xy[*i];
cxy[*i+]=xy[*i+];
} int* mindis=(int*)malloc(n*sizeof(int));
int* premindis=(int*)malloc(n*sizeof(int));
for(i=;i<n;i++)
{
mindis[i]=-;
}
int change=; while(change)
{
for(i=;i<n;i++)
{
premindis[i]=mindis[i];
}
for(i=;i<n;i++)
{
float min=;
for(j=;j<k;j++)
{
double s=sqrt((xy[*i]-cxy[*j])*(xy[*i]-cxy[*j])+(xy[*i+]-cxy[*j+])*(xy[*i+]-cxy[*j+]));
if(s<min)
{
min=s;
mindis[i]=j;
}
}
} /*
for(i=0;i<2;i++)
{
printf("%.3f ",cxy[2*i]);
printf("%.3f\n",cxy[2*i+1]);
}
*/ for(i=;i<k;i++)
{
int num=;
float s0=0.0;
float s1=0.0;
//cout<<i<<":";
for(j=;j<n;j++)
{
if(mindis[j]==i)
{
num++;
//cout<<j<<" ";
s0+=xy[*j];
s1+=xy[*j+];
}
}
if(num)
{
cxy[*i]=s0/num;
cxy[*i+]=s1/num;
}
//cout<<endl;
}
int flag=;
for(i=;i<n;i++)
{
if(mindis[i]!=premindis[i])
{
flag=;
break;
}
}
if(flag==)
change=;
} }
int main()
{
float xy[]={1.0, 1.0, 2.0, 1.0, 1.0, 2.0, 4.0, 5.0, 5.0, 4.0, 4.0, 4.0};
float cxy[]={0.0, 0.0, 0.0, 0.0};
kmeans(,xy,,cxy);
int i;
for(i=;i<;i++)
{
printf("%.3f ",cxy[*i]);
printf("%.3f\n",cxy[*i+]);
}
return ;
}
K均值聚类(C++)的更多相关文章
- 【转】算法杂货铺——k均值聚类(K-means)
k均值聚类(K-means) 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时 ...
- 5-Spark高级数据分析-第五章 基于K均值聚类的网络流量异常检测
据我们所知,有‘已知的已知’,有些事,我们知道我们知道:我们也知道,有 ‘已知的未知’,也就是说,有些事,我们现在知道我们不知道.但是,同样存在‘不知的不知’——有些事,我们不知道我们不知道. 上一章 ...
- 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例
k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定 ...
- Python实现kMeans(k均值聚类)
Python实现kMeans(k均值聚类) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=> ...
- 机器学习理论与实战(十)K均值聚类和二分K均值聚类
接下来就要说下无监督机器学习方法,所谓无监督机器学习前面也说过,就是没有标签的情况,对样本数据进行聚类分析.关联性分析等.主要包括K均值聚类(K-means clustering)和关联分析,这两大类 ...
- 第十篇:K均值聚类(KMeans)
前言 本文讲解如何使用R语言进行 KMeans 均值聚类分析,并以一个关于人口出生率死亡率的实例演示具体分析步骤. 聚类分析总体流程 1. 载入并了解数据集:2. 调用聚类函数进行聚类:3. 查看聚类 ...
- K均值聚类的失效性分析
K均值聚类是一种应用广泛的聚类技术,特别是它不依赖于任何对数据所做的假设,比如说,给定一个数据集合及对应的类数目,就可以运用K均值方法,通过最小化均方误差,来进行聚类分析. 因此,K均值实际上是一个最 ...
- K均值聚类
聚类(cluster)与分类的不同之处在于, 分类算法训练过程中样本所属的分类是已知的属监督学习. 而聚类算法不需要带有分类的训练数据,而是根据样本特征的相似性将其分为几类,又称为无监督分类. K均值 ...
- ML: 聚类算法-K均值聚类
基于划分方法聚类算法R包: K-均值聚类(K-means) stats::kmeans().fpc::kmeansruns() K-中心点聚类(K-Medoids) ...
- 探索sklearn | K均值聚类
1 K均值聚类 K均值聚类是一种非监督机器学习算法,只需要输入样本的特征 ,而无需标记. K均值聚类首先需要随机初始化K个聚类中心,然后遍历每一个样本,将样本归类到最近的一个聚类中,一个聚类中样本特征 ...
随机推荐
- c语言——字符串
char str[] = "http://c.biancheng.net"; char str[] = "http://c.biancheng.net"; ch ...
- Android 自定义 radiobutton
<RadioButton android:id="@+id/radiobutton_pay_method" android:layout_width="30dp&q ...
- Java8_Lambda表达式
从2014年java8发布到现在已经有几个年头了,现在java11都发布了.公司最近把服务器环境重新搭建了一遍,jdk版本也从7换成了8,终于可以在代码里面写Lambda表达式了.作为 ...
- 精简Docker镜像的五种通用方法
http://dockone.io/article/8163 精简Docker镜像的好处很多,不仅可以节省存储空间和带宽,还能减少安全隐患.优化镜像大小的手段多种多样,因服务所使用的基础开发语言不同而 ...
- OpenResty入门
写一个小例子--输出随机字符串 编写nginx配置文件 location /random { content_by_lua_file /usr/local/openresty/nginx/conf/l ...
- day14 前端基础 HTML
从今天开始,学习前端基础. 前端,就是HTML CSS JS 等 对于我们这种初学者,并不知道这些专业术语都是什么,给大家举一个形象的例子: HTML 就是一个人,赤裸裸的人 CSS 就是衣服 ...
- STL学习笔记8 -- 函数对象
重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象.一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个类对象,如果 ...
- day05_07 标志位讲解
continue: 需求:大于5才打印 for i in range(10): if i<6 : continue print(i) continue作用:结束本次循环,继续下次循环 break ...
- python学习-- Django Ajax CSRF 认证
使用 jQuery 的 ajax 或者 post 之前 加入这个 js 代码:http://www.ziqiangxuetang.com/media/django/csrf.js /*======== ...
- python 中输入一个字符串,判断这个字符串中有多少个字符、数字、空格、特殊字符
# -*- coding: utf8 -*- # Author:wxq #python 2.7 #首先定义一个字符串 str1 = raw_input('请输入一个字符:') #初始化字符.数字.空格 ...