sklearn聚类模型评估代码_sklearn建模及评估(聚类)

作为机器学习工具的

sklearn

,它主要作用是构建模型和评估。其主要的模型分为聚类、分类、回归等,而没有模型也有适应不同场景的多个算法。接下来我们从这几点进行简要总结。

1、聚类模型

聚类的输入是一组未被标记(所谓

target

值或

lable

)的样本,聚类根据数据自身的距离或相似度将它们划分为若干组。划分的原则是组内(内部)距离最小化,而组间(外部)距离最大化。sklearn提供的各种聚类方法有如下图所示:

聚类算法的实现需要

sklearn

的估计器(

Estimator

),估计其拥有

fit

predict

两个方法。以

iris

数据为例,使用

sklearn

估计器构建

K-Means

聚类模型,其实例如下代码所示:

1.1 构建聚类模型代码

from sklearn.datasets import load_iris

from sklearn.preprocessing import MinMaxScaler

from sklearn.cluster import KMeans

iris = load_iris()

iris_data = iris['data'] ##提取数据集中的特征

iris_target = iris['target'] ## 提取数据集中的标签

iris_names = iris['feature_names'] ### 提取特征名

scale = MinMaxScaler().fit(iris_data)## 训练规则

iris_dataScale = scale.transform(iris_data) ## 应用规则

kmeans = KMeans(n_clusters = 3,

random_state=123).fit(iris_dataScale) ##构建并训练模型

print('构建的K-Means模型为:\n',kmeans)

result = kmeans.predict([[1.5,1.5,1.5,1.5]])

print('花瓣花萼长度宽度全为1.5的鸢尾花预测类别为:', result[0])

1.2 聚类结果可视化

import pandas as pd

from sklearn.manifold import TSNE

import matplotlib.pyplot as plt

##使用TSNE进行数据降维,降成两维

tsne = TSNE(n_components=2,init='random',

random_state=177).fit(iris_data)

df=pd.DataFrame(tsne.embedding_) ##将原始数据转换为DataFrame

df['labels'] = kmeans.labels_ ##将聚类结果存储进df数据表

##提取不同标签的数据

df1 = df[df['labels']==0]

df2 = df[df['labels']==1]

df3 = df[df['labels']==2]

## 绘制图形

fig = plt.figure(figsize=(9,6)) ##设定空白画布,并制定大小

##用不同的颜色表示不同数据

plt.plot(df1[0],df1[1],'bo',df2[0],df2[1],'r*',

df3[0],df3[1],'gD')

plt.savefig('C:/Users/yspmm/spydertest/聚类结果2.png')

plt.show() ##显示图片

1.3 使用FMI评价聚类模型

sklearn的metrics模块提供提供了聚类模型评价指标。为什么要评价,目的在于模型时候达到预期效果。

from sklearn.metrics import fowlkes_mallows_score

for i in range(2,7):

##构建并训练模型

kmeans = KMeans(n_clusters = i,random_state=123).fit(iris_data)

score = fowlkes_mallows_score(iris_target,kmeans.labels_)

print('iris数据聚%d类FMI评价分值为:%f' %(i,score))

参考书:

Python数据分析与应用  黄红梅、张良均  主编    中国工信出版集团和人民邮电出版社

你可能感兴趣的:(sklearn聚类模型评估代码)