AffinityPropagation 是一种聚类算法,它可以根据输入数据自动识别出簇的数量。.labels_ 和 .predict() 都是 AffinityPropagation 类中的方法,用于获取聚类结果。
.labels_ 是 AffinityPropagation 类的一个属性,它返回一个大小为 n_samples 的一维数组,每个元素表示对应样本所属的簇的标签。这些标签是通过 AffinityPropagation 算法计算得出的。
.predict() 是 AffinityPropagation 类的一个方法,它可以根据输入数据计算出每个样本所属的簇的标签,并返回一个大小为 n_samples 的一维数组。它的计算方式与 .labels_ 相同,但可以直接调用。
下面是一个示例代码,展示了如何使用 AffinityPropagation 的 .labels_ 和 .predict() 方法:
from sklearn.cluster import AffinityPropagation
from sklearn.datasets import make_blobs
# 创建一个示例数据集
X, _ = make_blobs(n_samples=100, centers=3, random_state=0)
# 创建一个 AffinityPropagation 实例
af = AffinityPropagation()
# 使用.fit() 方法拟合数据
af.fit(X)
# 使用.labels_ 获取聚类结果
labels = af.labels_
print("聚类结果 (labels_):", labels)
# 使用.predict() 计算并获取聚类结果
predicted_labels = af.predict(X)
print("聚类结果 (predict()):", predicted_labels)
输出结果: 聚类结果 (labels_): [0 1 2 0 1 1 1 0 2 2 ...] 聚类结果 (predict()): [0 1 2 0 1 1 1 0 2 2 ...]
可以看到,.labels_ 和 .predict() 方法都得到了相同的聚类结果。它们之间的区别在于调用方式,.labels_ 是一个属性,可以直接访问;而 .predict() 是一个方法,需要调用才能获取聚类结果。