K-Means:如何解决错误:scatter() 获得参数“c”的多个值

问题描述 投票:0回答:1

我是机器学习新手,我有一项任务需要我执行无监督学习,所以我决定使用 K-Means。

我使用Python来编码。我已将数据(我的数据来自 csv 文件)导入到 Google Colab 中。我的数据有 7 个特征,我需要绘制聚类,但出现错误:scatter() 获得了参数 'c' 的多个值。

这是我的代码:

这部分是我决定 k 值的方法。我用肘法。

%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import numpy as np
import pandas as pd

from sklearn.cluster import KMeans

DATA = "/content/information.csv"
df = pd.read_csv (DATA, header=0)
data = list(zip(x_train["date"], x_train["a"], x_train["b"], x_train["c"], x_train["d"], x_train["e"], x_train["f"]))
print(data)

inertias = []

for i in range(1,40):
    kmeans = KMeans(n_clusters=i)
    kmeans.fit(data) 
    inertias.append(kmeans.inertia_)

plt.plot(range(1,40), inertias, marker='o')
plt.title('Elbow method')
plt.xlabel('Number of clusters')
plt.ylabel('Inertia')
plt.show()

这就是出错的地方:

kmeans = KMeans(n_clusters=5) 
kmeans.fit(data)  
plt.scatter(x_train["date"], x_train["a"], x_train["b"], x_train["c"], x_train["d"], x_train["e"], x_train["f"], c=kmeans.labels_) 
plt.show()  

该错误似乎表明出错的部分位于 plt.scatter() 行。

我尝试了 2 个功能,它可以工作,但是当涉及 7 个功能时,我收到错误消息。可能出了什么问题?

python matplotlib machine-learning k-means unsupervised-learning
1个回答
0
投票

plt.scatter
函数不接受多个数据集进行绘图,只能传递x和y。因此,正如评论中所建议的,您需要循环遍历您想要绘制的内容。

y_cols = ["a", "b", "c", "d", "e", "f"]
for y_col in y_cols:
    plt.scatter(x_train["date"], x_train[y_col], c=kmeans.labels_)

您没有提供足够的代码供我们运行,因此我无法测试它以查看是否犯了任何错误。

© www.soinside.com 2019 - 2024. All rights reserved.