没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
数据挖掘实验报告
班级: 姓名: 学号:
1. 数据来源描述
本次数据挖掘实验的数据源来自加州大学计算机与信息院,是
用于合成控制图时间序列聚类分析的一组数据。数据集中一共包含
600 组数据,每一组数据都有 60 个分量,也就是数据是 60 维的。数
据一共可以分成 6 个聚类,分别是:
1-100 Normal (正常)
101-200 Cyclic (循环)
201-300 Increasing trend (增加趋势)
301-400 Decreasing trend (减少趋势)
401-500 Upward shift (上升变化)
501-600 Downward shift (下降变化)
2. 数据预处理
由于本数据集的数据维数较多,所以本实验采用了结构体来存
储 60 维的数据,并使用指针来进行对数据的操作,以提高速度。
在数据预处理过程中,首先将数据从 data 文件中读出,后依次存入
结构体数组 dataset[600]中。
3. k-means 聚类算法
k-means 算法接受参数 k ;然后将事先输入的 n 个数据对象
划分为 k 个聚类以便使得所获得的聚类满足:同一聚类中的对象
1
相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利
用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行
计算的。
K-means 算法是最为经典的基于划分的聚类方法,是十大经
典数据挖掘算法之一。K-means 算法的基本思想是:以空间中 k
个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方
法,逐次更新各聚类中心的值,直至得到最好的聚类结果。
(1)算法思路:
首先从 n 个数据对象任意选择 k 个对象作为初始聚类中心;
而对于所剩下其它对象,则根据它们与这些聚类中心的相似度
(距离),分别将它们分配给与其最相似的(聚类中心所代表
的)聚类;然 后再计算每个所获新聚类的聚类中心(该聚类中所
有对象的均值);不断重复这一过程直到标准测度函数开始收敛
为止。一般都采用均方差作为标准测度函数. k 个聚类具有以下特
点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。
该算法的最大优势在于简洁和快速。算法的关键在于初始中
心的选择和距离公式。
(2)算法步骤:
step.1---初始化距离 K 个聚类的质心(随机产生)
2
step.2---计算所有数据样本与每个质心的欧氏距离,将数据
样本加入与其欧氏距离最短的那个质心的簇中(记录其数据样本
的编号)
step.3---计算现在每个簇的质心,进行更新,判断新质心是
否与原质心相等,若相等,则迭代结束,若不相等,回到 step2
继续迭代。
4. 数据挖掘实现的源代码
//111060850.cpp KMeans 聚类算法
//
#include "stdafx.h"
#include<iostream>
#include<math.h>
#include<stdlib.h>
#include<string>
#include<fstream>
#include<time.h>
using namespace std;
const int N=36000; //数据个数
const int D=60; //数据维度
struct DataSet{ //用来存储数据的结构体
double arg[D];
};
const int K=6; //集合个数
int *CenterIndex; //质心索引集合
//struct DataSet *Center; //质心集合
//struct DataSet *CenterCopy[];
DataSet Center[K]; //保存现在的质心
DataSet CenterCopy[K]; //保存上一次迭代中的质心
//double *DataSet;
int Cluster[6][N/D]; //保存每个簇包含的数据的索引值
3
剩余11页未读,继续阅读
资源评论
- zyx052014-09-30的确是可以运行,值得学习
- wuyou1112014-06-12的确是可以运行,代码也算容易懂
- caoyun90062013-08-28可以运行,代码易懂,不错的参考。
- bfsgsh2013-07-02非常不错,很有参考价值,提供了分析的方法,并有比对的参考方案!
麦麦大
- 粉丝: 163
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功