聚类分析: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()
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
关于yml配置文件的相关解释