快捷搜索: 王者荣耀 脱发

聚类分析:kmeans实现对鸢尾花的分类

聚类算法的原理

聚类

聚类指的是没有目标函数情况下对一组数据分类,根据聚类结果确定最后的分类种数。SVM支持向量机分类,决策树分类等学习算法都是根据目标值学习模型。所以这里需要多次迭代学习,可以理解为用历史数据作为模型训练的目标函数

kmeans 算法原理

假定一个划分的簇数n,任选k个样本作为簇中心 根据样本与簇的距离相似度划分样本 重新计算簇中心 不断重复这一过程直到每个簇中心点不再变化

核心代码

from sklearn.cluster import KMeans
kmeans = KMeans(n__clusters)#模型初始化
kmeans.fit(X)#模型学习

模型评估

ARI 系数(有分类标签的数据集)

adjusted rand index metrics.adjusted_rand_score(y, kmeans.labels_) 取值范围【0,1】越大聚类效果越好
from sklearn import metrics
#将类名转换为整数值
data.loc[ data[class] == Iris-setosa, class ] = 0
data.loc[ data[class] == Iris-versicolor, class ] = 1
data.loc[ data[class] == Iris-virginica, class ] = 2
#y = data[class].values.astype(int)
metrics.adjusted_rand_score(y, kmeans.labels_)

轮廓系数

考虑聚类结果的簇内凝聚度和簇间分离度 取值范围【-1,1】越大聚类效果越好
metrics.silhouette_score( X, kmeans.labels_, metric=euclidean )

基础补充

取数

data.iloc[:,0:1]#表示取第一列,第一列不从索引列算起
data[:5]#取前5行

索引设置

set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=)
data.set_index(keys=[sepal length],inplace=True)#设置索引列
data.reset_index(inplace=True)#重置索引列 0-n

确定某一列的取值种数

data[class].unique()
经验分享 程序员 微信小程序 职场和发展