pandas 数据框对象可以与 sklearn kmeans 聚类一起使用吗?
Will pandas dataframe object work with sklearn kmeans clustering?
数据集是 pandas 数据帧。这是sklearn.cluster.KMeans
km = KMeans(n_clusters = n_Clusters)
km.fit(dataset)
prediction = km.predict(dataset)
这就是我决定哪个实体属于哪个集群的方式:
for i in range(len(prediction)):
cluster_fit_dict[dataset.index[i]] = prediction[i]
这是数据集的样子:
A 1 2 3 4 5 6
B 2 3 4 5 6 7
C 1 4 2 7 8 1
...
其中 A、B、C 是索引
这是使用 k-means 的正确方法吗?
要知道您的数据框 dataset
是否包含合适的内容,您可以显式转换为 numpy 数组:
dataset_array = dataset.values
print(dataset_array.dtype)
print(dataset_array)
如果数组具有齐次数值 dtype
(通常为 numpy.float64
),那么它应该适用于 scikit-learn 0.15.2 及更高版本。例如,您可能仍需要使用 sklearn.preprocessing.StandardScaler
规范化数据。
如果你的数据框是异构类型的,对应的numpy数组的dtype
会是object
,这不适合scikit-learn。您需要为所有相关特征提取数值表示(例如通过为分类特征提取虚拟变量)并删除不适合特征的列(例如样本标识符)。
假设数据框中的所有值都是数字,
# Convert DataFrame to matrix
mat = dataset.values
# Using sklearn
km = sklearn.cluster.KMeans(n_clusters=5)
km.fit(mat)
# Get cluster assignment labels
labels = km.labels_
# Format results as a DataFrame
results = pandas.DataFrame([dataset.index,labels]).T
或者,您可以尝试 KMeans++ for Pandas。
数据集是 pandas 数据帧。这是sklearn.cluster.KMeans
km = KMeans(n_clusters = n_Clusters)
km.fit(dataset)
prediction = km.predict(dataset)
这就是我决定哪个实体属于哪个集群的方式:
for i in range(len(prediction)):
cluster_fit_dict[dataset.index[i]] = prediction[i]
这是数据集的样子:
A 1 2 3 4 5 6
B 2 3 4 5 6 7
C 1 4 2 7 8 1
...
其中 A、B、C 是索引
这是使用 k-means 的正确方法吗?
要知道您的数据框 dataset
是否包含合适的内容,您可以显式转换为 numpy 数组:
dataset_array = dataset.values
print(dataset_array.dtype)
print(dataset_array)
如果数组具有齐次数值 dtype
(通常为 numpy.float64
),那么它应该适用于 scikit-learn 0.15.2 及更高版本。例如,您可能仍需要使用 sklearn.preprocessing.StandardScaler
规范化数据。
如果你的数据框是异构类型的,对应的numpy数组的dtype
会是object
,这不适合scikit-learn。您需要为所有相关特征提取数值表示(例如通过为分类特征提取虚拟变量)并删除不适合特征的列(例如样本标识符)。
假设数据框中的所有值都是数字,
# Convert DataFrame to matrix
mat = dataset.values
# Using sklearn
km = sklearn.cluster.KMeans(n_clusters=5)
km.fit(mat)
# Get cluster assignment labels
labels = km.labels_
# Format results as a DataFrame
results = pandas.DataFrame([dataset.index,labels]).T
或者,您可以尝试 KMeans++ for Pandas。