K-means算法实战-一维数据的聚类
来源:互联网 发布:刷码软件 编辑:程序博客网 时间:2024/06/05 21:07
用户有个开关,可以记录用户每次开关灯的状态,并且能够记录开关灯前后的光敏值。一般用户每天开灯时间集中在晚上,关灯时间也基本集中在晚上,但是有一些异常值,比如起夜上厕所开灯、上完厕所再关灯。获取用户开关灯的光敏值若干组,用K-means算法聚类出用户开关灯的阈值。
以开灯的数据为例:
序号开灯前15002550353144605580610073085609401090011400使用K-means算法将数据分为3类,哪个标签的样本数量最多即为阈值:
程序如下:
#include <iostream>#include <vector>#include <cmath>using namespace std;class mL{public:void kmeans(vector<int> &sample,int k){int len = sample.size();vector<int> meanValue(k,0);//初始化均值for(int i = 0;i < k; ++i)meanValue[i] = sample[i];while(1){vector<vector<int> > C(k,vector<int>(k,0)); //用于存储类别vector<int> numC(k,0);//计算每个样本与各个均值的距离for(int i = 0; i < len;++i){int minDis = abs(sample[i] - meanValue[0]);int minDisIndex = 0;for(int j = 1; j < k; ++j){int dis = abs(sample[i] - meanValue[j]);if(dis < minDis){minDis = dis;minDisIndex = j;}}//每个样本属于哪个类C[minDisIndex][numC[minDisIndex]] = sample[i];numC[minDisIndex]++;}//均值更新int ifBreak = 0;for(int i = 0; i < k;++i){int Sum = 0;for(int j = 0; j < numC[i];++j){Sum += C[i][j];}int lastMeanValue = meanValue[i];meanValue[i] = Sum/numC[i];if(lastMeanValue == meanValue[i]) ifBreak++;}//判断均值是否被更新if(ifBreak == k) {int maxNum = 0;int maxNumIndex = 0;for(int i = 0;i < k; ++i){if( numC[i] > maxNum){maxNum = numC[i];maxNumIndex = i;}}cout << meanValue[maxNumIndex] << endl;//cout << " Break" << endl;break;}}}};int main(){int arr[] = {500,550,531,460,580,100,30,560,40,900,400};vector<int> lightValue(arr,arr + 10);mL *p = new mL;p->kmeans(lightValue,3);delete p;}
阅读全文
0 0
- K-means算法实战-一维数据的聚类
- K-means 聚类算法的理解与案例实战
- 数据挖掘实战之 K-means算法
- 【数据挖掘】k-means聚类算法
- 数据挖掘 K-Means++聚类算法
- 聚类算法(一):k-均值 (k-means)算法
- py2.7《机器学习实战》利用k-means聚类算法对未标数据分组
- 实战Mahout聚类算法Canopy+K-means
- 实战Mahout聚类算法Canopy+K-means
- 实战Mahout聚类算法Canopy+K-means
- 实战Mahout聚类算法Canopy+K-means
- 《机器学习实战》1.K-Means聚类算法
- K-Means聚类算法的实现
- k-means算法matlab实战
- 用餐饮客户消费数据进行K-Means算法实战
- k-means聚类算法
- k-means聚类算法
- K-means聚类算法
- 建立ubuntu到开发板(2451)的磁盘映射
- 单链表的学习总结
- Knapsack in a Globalized World
- 字符串格式化
- codeforces 835B The number on the board (优先队列,贪心)
- K-means算法实战-一维数据的聚类
- svn的项目中突然多了bin
- 数字和字符串的相互转换
- 如何跳过ZCL发送数据
- SPFA差分约束(bzoj 2330: [SCOI2011]糖果)
- Android视频滤镜添加硬解码方案
- 连接符
- Spring MVC拦截器(Interceptor)
- 2017多校联合一/hdu6040Hints of sd0061