作为机器学习工具的
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数据分析与应用 黄红梅、张良均 主编 中国工信出版集团和人民邮电出版社