【mechine learning-无监督学习-聚类代码实战】


上一节我们讲了无监督学习的分类,本章用sklearn库进行代码实战一下,实现聚类。

导入模块

import matplotlib.pyplot as plt

from sklearn.datasets import make_moons# 样本生成器
from sklearn import metrics, cluster #评价方法,聚类库

准备数据

sklearn中的数据集主要分为四类:

  1. Toy datasets 玩具数据集。这种数据集一般采用sklearn.datasets.load_加载数据集
  2. Real world datasets(真实世界数据集)。这些数据集通常需要通过sklearn.datasets.fetch_函数从网络上下载,它们是近年来真实收集的数据,适用于更复杂的机器学习任务。例如,新闻组(20 Newsgroups)数据集,这是一个用于文本分类的大型数据集。
  3. Generated datasets(生成数据集)。sklearn.datasets 还提供了一系列函数来生成人工数据集,如make_classification、make_regression等。这些函数可以根据用户指定的参数生成用于分类、回归等任务的数据集。
  4. 其他。还提供了一些从OpenML下载数据的方法、从外部加载数据集等等

本次选用了make_moons生成数据集,该接口参数说明如下:

n_samples:

如果为int,则生成的总点数。 如果是两个元素的元组,则两个月亮中每个月亮的点数。

shuffle bool, optional (default=True)

是否shuffle样本。

noise double or None (default=None)

加到数据中的高斯噪声的标准偏差。

random_state int, RandomState instance, default=None

确定用于数据集改组和噪声的随机数生成。 为多个函数调用传递可重复输出的int值。

实现:

X, y_true = make_moons(200, noise=.05, random_state=0)

其中返回值X是样本数据,y_true是每个样本的类成员的整数标签(0或1)

使用kmeans聚类

在skearn中kmeans等算法来实现聚类已经是很简单的了,一个函数即可

# gmm = GaussianMixture(n_components=2)
# gmm = cluster.MeanShift()
gmm = cluster.KMeans(4)
# gmm = cluster.AgglomerativeClustering(2)
# gmm = cluster.AffinityPropagation()
# gmm = cluster.SpectralClustering(2,affinity="nearest_neighbors")
# gmm = cluster.DBSCAN()

模型训练&并获取结果

labels = gmm.fit_predict(X)

评估

使用轮廓系数等评估聚类模型的效果

print(metrics.silhouette_score(X, labels))
print(metrics.calinski_harabasz_score(X, labels))
print(metrics.davies_bouldin_score(X, labels))

可视化

plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis');
plt.show()

在这里插入图片描述

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值