gpt4 book ai didi

python-3.x - 如何在 14 列的数据框中对 8 列的 python 进行 KMeans 聚类?

转载 作者:行者123 更新时间:2023-12-04 15:59:15 26 4
gpt4 key购买 nike

我正在尝试对给我的数据框进行聚类。它有 14 列。如何对其中的 8 个进行聚类?

下面是我找到并遵循的代码。

弯头法:

Elbow_method

可视化

Visualization

# 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 列。但是我怎么也看不懂?

最佳答案

使用 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 散点图中可视化集群。

关于python-3.x - 如何在 14 列的数据框中对 8 列的 python 进行 KMeans 聚类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50929921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com