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

content

  • 聚类算法的原理
    • 聚类
    • kmeans 算法原理
    • 核心代码
  • 模型评估
    • ARI 系数(有分类标签的数据集)
    • 轮廓系数
  • 基础补充
    • 取数
    • 索引设置
    • 确定某一列的取值种数

聚类算法的原理

聚类

聚类指的是没有目标函数情况下对一组数据分类,根据聚类结果确定最后的分类种数。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()

你可能感兴趣的:(kmeans,分类,机器学习)