以下为《聚类算法有哪几种》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
聚类
定义:按某个标准把一个数据集分割成不同的类或簇,同类数据相似性尽可能大,异类数据差异性尽可能大。
聚类和分类的区别
聚类:是一种无监督学习方法,目标为聚合相似数据,并不预测。
分类:是一种监督学习方法,目标为分类,并预测未知数据。
聚类的一般过程
1.数据准备:特征标准化,降维。
2.特征选择:从最初特征选择最有效的特征,并将其存储在向量中。
3.特征提取:由选择的特征转换成新的突出特征。
4.聚类:基于某种距离函数度量相似度,获取簇。
5.聚类结果评估:分析聚类结果,如距离误差和(SSE)。
数据对象间的相似度度量
注:适用于数值型数据
/
Euclidean为2-范某某,Manhattan为1-范某某,Chebyshev为∞-范某某,Minkowski为p-范某某。
cluster(簇)之间的相似度度量
有些聚类算法(如层次聚类)需要额外衡量cluster之间的距离,假设Ci和Cj之间的距离为两个cluster,则前四种方法定义的Ci和Cj之间的距离如下表所示。
/
Single-link定义的距离为两个cluster之间距离最近的两点间的距离,聚类时会产生链式效应,即可能会出现非常大的cluster。
Complete-link定义的距离为两个cluster之间距离最远的两点间距离,可以避免链式效应,但对异常样本点(不符合数据集的整体分布的噪声点)却非常敏感,容易产生不合理的聚类。
UPGMA是上述两种方法的折中,cluster之间距离为所有点距离的平均值。
WPGMA是两个cluster之间的距离的加权平均值。
数据聚类方法
/
划分式聚类方法
需要事先指定簇类的数目或者聚类中心,通过反复迭代,直至最后达到“簇内的点足够近,簇间的点足够远”的目标。
经典的划分式聚类方法由k-means及其变体k-means++、bi-kmeans、kernel k-means等。
k-means算法
流程如下。
/
经典k-means算法由以下几个特点:
1.需要提前确定k值。
2.对初始质心点敏感。
3.对异常数据敏感。
k-means源代码
主程序
%% input the data
A = load('testSet.txt');
%% 计算质心
centroids = kMeans(A, 4);
随机选取质心
%% 取得随机中心
function [ centroids ] = randCent( dataSet, k )
[m,n] = size(dataSet);%取得列数
centroids = zeros(k, n);
for j = 1:n
minJ = min(dataSet(:,j));
rangeJ = max(dataSet(:,j))-min(dataSet(:,j));
centroids(:,j) = minJ+rand(k,1)*rangeJ;%产生区间上的随机数
end
end
计算相似性
function [ dist ] = distence( vecA, vecB )
dist = (vecA-vecB)*(vecA-vecB)';%这里取欧式距离的平方
end
k-means主程序
%% kMeans的核心程序,不断迭代求解聚类中心
function [ centroids ] = kMeans( dataSet, k )
[m,n] = s 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 )=0;
else
step1_data(j,k)=(pre_data(j,k)-(xm-2*xs))/(4*xs);
end
end
end
xlswrite('norm_data.xlsx',step1_data);
%% 层次聚类
numClust=3;
dist_h='spearman';
link='weighted';
hidx=clusterdata(step1_data,'maxclust',numClust,'distance',dist_h,'linkage',link);
[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《聚类算法有哪几种》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。