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个聚类中心,然后遍历每一个样本,将样本归类到最近的一个聚类中,一个聚类中样本特征 ...
随机推荐
- python项目中输出指定颜色的日志
起因 在开发项目过程中,为了方便调试代码,经常会向stdout中输出一些日志,默认的这些日志就直接显示在了终端中.而一般的应用服务器,第三方库,甚至服务器的一些通告也会在终端中显示,这样就搅乱了我们想 ...
- loj2043 「CQOI2016」K 远点对
k-d tree 裸题------ #include <algorithm> #include <iostream> #include <cstdio> using ...
- laravel5.2总结--ORM模型
ORM模型简介 1>什么是ORM? ORM,即 Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在操作具体的 ...
- Asp.net自定义控件开发任我行(3)-Render
摘要 上一篇我们讲到了自定义标签TagPrefix用法,此篇我们来讲一下控件的呈现,主要是呈现下拉框 内容 呈现的方法有,Render,RenderControl,RenderChildren,这三个 ...
- 【Plus One】cpp
题目: Given a non-negative number represented as an array of digits, plus one to the number. The digit ...
- STL学习笔记6 -- 栈stack 、队列queue 和优先级priority_queue 三者比较
栈stack .队列queue 和优先级priority_queue 三者比较 默认下stack 和queue 基于deque 容器实现,priority_queue 则基于vector 容器实现 ...
- Cygwin访问盘符、使用别名、彩色显示、使用adb命令
Cygwin是一个在Windows平台上运行的类UNIX模拟环境.安装过程我就不重复造轮子了,百度一下即可.其中安装的时候需要装哪些包,要看你用到哪些.比如我就是只用adb shell,所以全部默认安 ...
- Leetcode 523.连续的子数组和
连续的子数组和 给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数. 示例 1: ...
- jQuery ajax使用$(this).parent()无效解决方法
div=$(this).parent(); //先获取父级元素 div.remove(); //再删除 $(".delStu").click(function () { ...
- mysql物理备份恢复 xtrabackup 初试
听闻xtrabackup开源且强大 2018-03-06 11:54:41 在官网下载安装了最新的2.4.9版本 网上文章都用的innobackupex,但是最新版已经抛弃了,自己看看手册<Pe ...