Ошибка точечной диаграммы: scatter () получил несколько значений для аргумента 'c' - PullRequest
0 голосов
/ 05 мая 2020

поэтому я пытаюсь сделать какой-то код для набора данных радужной оболочки и использовать для него KMeans. Все хорошо, но похоже, что у моего кода для центроида есть проблема, которая закончилась этой ошибкой:

  plt.scatter(*centroid, c="blue")

    TypeError: scatter() got multiple values for argument 'c'

Это это мой код

import pandas as pd
from sklearn.cluster import KMeans
from sklearn import metrics
import numpy as np
from matplotlib import pyplot as plt

direktori = 'iris.data.csv'

names = ['sepal-length','sepal-width','petal-length','petal-width','class']

dataset = pd.read_csv(direktori, names=names)


#ambil variabel untuk cluster
df  = np.array(dataset[['sepal-length','sepal-width','petal-length','petal-width']])
kelas = np.array(dataset['class'])

print('\n')

for i in range (2,8):

    kmeans = KMeans(n_clusters=i)
    kmeans.fit(df)

    label = kmeans.labels_
    #evalauasi menggunakan FMI Index
    #ambil label asli dari data
    label_asli = kelas
    label_prediksi = label
    FMI = metrics.fowlkes_mallows_score(label_asli, label_prediksi)
    print("FMI values with n_clusters = ", i, "= ", FMI)   

print('\n')

for i in range (2,8):  
    kmeans = KMeans(n_clusters=i)
    kmeans.fit(df)
    centroids= kmeans.cluster_centers_

    label = kmeans.labels_
    labels= kmeans.predict(df)  
    CHIndex = metrics.calinski_harabasz_score(df, label)
    print("CH index with n_clusters = ", i, " = ", CHIndex)

    #menggunakan sepal-length dan sepal-width sebagai bahan untuk visualisasi   
    fig = plt.figure(figsize=(5,5))

    plt.scatter(df[:, 0], df[:, 1], c=labels, alpha=0.5, edgecolor='k', cmap="viridis")

    #Scatter fuction that caused the error
    for idx, centroid in enumerate(centroids):
        plt.scatter(*centroid, c="blue")

    plt.xlim(0, 8.5)
    plt.ylim(0, 8.5)
    plt.title('Kmeans Visualization for n_clusters = %i' %i)
    plt.xlabel('sepal-length')
    plt.ylabel('sepal-width')

    plt.show()

есть ли часть, которую я должен исправить? пожалуйста, дайте мне подробную информацию о том, какую часть я должен изменить с помощью новой строки кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...