我是机器学习新手,我有一项任务需要我执行无监督学习,所以我决定使用 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 个功能时,我收到错误消息。可能出了什么问题?
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_)
您没有提供足够的代码供我们运行,因此我无法测试它以查看是否犯了任何错误。