Pandas如何在Python的Scikit-learn中获取聚类“质心”
在本文中,我们将介绍如何使用Pandas在Python的Scikit-learn中获取聚类“质心”。在机器学习中,聚类是一种将数据集分成多个组的技术。其目的是在组内最小化差异,并在组与组之间最大化差异,使得从数据集中发现相似模式和关系变得更容易。在聚类算法中,质心是指每个组中心的平均值。
阅读更多:Pandas 教程
导入必要的库
要使用Scikit-learn中的聚类算法和Pandas进行质心计算,我们需要导入以下库:
import pandas as pd
import numpy as np
from sklearn.cluster import AgglomerativeClustering
创建DataFrame
首先,我们需要创建一个包含数据的Pandas DataFrame。为了说明如何获取聚类“质心”,我们将使用一个简单的数据集,并在DataFrame中添加标签列。此数据集有四个特征,并且每个值都介于0和1之间。
# 创建一个包含数据的Pandas DataFrame
data = {'Feature1': [0.5, 0.7, 0.2, 0.4, 0.6, 0.9, 0.1, 0.3],
'Feature2': [0.8, 0.4, 0.6, 0.2, 0.9, 0.5, 0.3, 0.7],
'Feature3': [0.4, 0.3, 0.5, 0.1, 0.8, 0.7, 0.6, 0.2],
'Feature4': [0.2, 0.4, 0.3, 0.7, 0.5, 0.1, 0.9, 0.6],
'Label': ['A', 'B', 'B', 'A', 'C', 'C', 'A', 'B']}
df = pd.DataFrame(data)
我们的DataFrame现在看起来像这样:
Feature1 Feature2 Feature3 Feature4 Label
0 0.5 0.8 0.4 0.2 A
1 0.7 0.4 0.3 0.4 B
2 0.2 0.6 0.5 0.3 B
3 0.4 0.2 0.1 0.7 A
4 0.6 0.9 0.8 0.5 C
5 0.9 0.5 0.7 0.1 C
6 0.1 0.3 0.6 0.9 A
7 0.3 0.7 0.2 0.6 B
聚类算法
接下来,我们创建一个聚类算法对象,并使用fit_predict方法将数据集拟合到聚类模型中。在这个例子中,我们使用AgglomerativeClustering算法,并将组数设置为3。
# 创建聚类算法对象
cluster = AgglomerativeClustering(n_clusters=3)
# 拟合数据集
df['Cluster'] = cluster.fit_predict(df.iloc[:, :-1].values)
现在,我们的DataFrame将如下所示:
Feature1 Feature2 Feature3 Feature4 Label Cluster
0 0.5 0.8 0.4 0.2 A 0
1 0.7 0.4 0.3 0.4 B 1
2 0.2 0.6 0.5 0.3 B 0
3 0.4 0.2 0.1 0.7 A 0
4 0.6 0.9 0.8 0.5 C 2
5 0.9 0.5 0.7 0.1 C 2
6 0.1 0.3 0.6 0.9 A 0
7 0.3 0.7 0.2 0.6 B 1
我们可以看到,每个样本现在都被分配到一个聚类中心。但是,我们还没有计算每个聚类的“质心”。
计算质心
为了计算每个聚类的“质心”,我们需要使用Pandas的groupby方法。这将使我们能够将DataFrame按照标签列(或聚类列)分组,并使用mean函数计算每个聚类的平均值。
# 按照聚类分组,并计算平均值
centroid_df = df.groupby('Cluster').mean().reset_index()
现在我们有一个包含各个聚类“质心”的Pandas DataFrame。
Cluster Feature1 Feature2 Feature3 Feature4
0 0 0.333333 0.566667 0.366667 0.466667
1 1 0.600000 0.466667 0.333333 0.566667
2 2 0.750000 0.700000 0.750000 0.300000
我们可以看到,我们现在有每个聚类的平均值。这些值对于我们的聚类算法非常重要,因为它们代表了与每个聚类中心最相似的样本。
总结
聚类是一种很有用的机器学习技术,可以帮助我们发现相似的数据模式和关系。在Scikit-learn中,我们可以使用不同的聚类算法,包括AgglomerativeClustering。使用Pandas分析数据时,我们可以使用groupby和mean函数计算每个聚类的平均值,从而获得聚类的“质心”。聚类“质心”是聚类中心的平均值,对于重新分类未标记数据非常有用。
极客笔记