如何在 python 中对 14 列数据框中的 8 列进行 KMeans 聚类?
Posted
技术标签:
【中文标题】如何在 python 中对 14 列数据框中的 8 列进行 KMeans 聚类?【英文标题】:How can I do KMeans clustering in python for 8 columns in a data-frame of 14 columns? 【发布时间】:2018-11-28 12:10:05 【问题描述】:我正在尝试对给我的数据框进行聚类。它有 14 列。如何对其中的 8 个进行聚类?
以下是我找到并遵循的代码。
肘法:
可视化
# K-Means Clustering
# importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# importing tha customer Expenses Invoices dataset with pandas
dataset=pd.read_csv('Expense_Invoice.csv')
X=dataset.iloc[: , [3,2]].values
# Using the elbow method to find the optimal number of clusters
from sklearn.cluster import KMeans
wcss = []
for i in range(1, 11):
kmeans=KMeans(n_clusters=i, init='k-means++', max_iter= 300, n_init= 10, random_state= 0)
kmeans.fit(X)
wcss.append(kmeans.inertia_)
plt.plot(range(1, 11),wcss)
plt.title('The Elbow Method')
plt.xlabel('Number of clusters K')
plt.ylabel('Average Within-Cluster distance to Centroid (WCSS)')
plt.show()
# Applying k-means to the mall dataset
kmeans=KMeans(n_clusters=3, init='k-means++', max_iter= 300, n_init= 10, random_state= 0)
y_kmeans=kmeans.fit_predict(X)
# Visualizing the clusters
plt.scatter(X[y_kmeans == 0, 0], X[y_kmeans == 0, 1], s = 100, c = 'red', label='Careful(c1)')
plt.scatter(X[y_kmeans == 2, 0], X[y_kmeans == 2, 1], s = 100, c = 'green', label='Standard(c2)')
plt.scatter(X[y_kmeans == 1, 0], X[y_kmeans == 1, 1], s = 100, c = 'blue', label='Target(c3)')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s = 250, c = 'yellow',
label='Centroids')
plt.title('Clusters of customer Invoices & Expenses')
plt.xlabel('Total Invoices ')
plt.ylabel('Total Expenses')
plt.legend()
plt.show()
这非常有效,但这仅适用于两列(变量),我希望它用于 8 列。但我不明白怎么做?
【问题讨论】:
您没有包含代码。当你说你不能这样做时,你遇到的具体问题是什么? 请看附图。 亲爱的 Rup,请看一下,这里是代码。 请注意,k-means 对属性缩放和倾斜数据非常敏感。所以在“发票”等属性上使用它可能没有意义。 【参考方案1】:使用X=dataset.iloc[: , [3,2]].values
,您就是第 4 列和第 3 列。
KMeans 对您选择的所有列执行聚类。
因此,您需要根据需要更改 X=dataset.iloc[: , [3,2]]
。例如,使用数据集的前 8 列:X=dataset.iloc[:, 0:8].values
。
查看 pandas 文档以了解如何在数据框中选择数据的更多选项:https://pandas.pydata.org/pandas-docs/stable/indexing.html
请记住,您无法像以前那样在 2D 散点图中可视化您的集群。
【讨论】:
效果很好,我继续前进。我使用 PCA 方法来可视化数据,甚至尝试过 tSNE,但无法理解我应该使用哪一种! 它有所帮助,但我无法将数据可视化。我该怎么办?以上是关于如何在 python 中对 14 列数据框中的 8 列进行 KMeans 聚类?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 pyspark 中对 spark 数据框中的多列求和?