Почему я не могу использовать более 3 столбцов в этой функции, используемой для построения графика колен для K-средних? - PullRequest
0 голосов
/ 23 февраля 2019

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

import seaborn as sns

iris = sns.load_dataset('iris')
iris.columns
data = iris.iloc[:, 0:3] # selecting all lines and 3 columns

sse = {}

for k in range(1, 10):
kmeans = KMeans(n_clusters=k, max_iter=1000).fit(data)
data["clusters"] = kmeans.labels_
sse[k] = kmeans.inertia_ # Inertia: Sum of distances of samples to their closest cluster center

plt.figure()
plt.plot(list(sse.keys()), list(sse.values()))
plt.xlabel("Number of cluster")
plt.ylabel("SSE")
plt.show()

Однако, если я использую в этом коде более 3 столбцов:

data = iris.iloc[:, 0:3]

, например:

data = iris.iloc[:, 0:4]

код не запускается.

Кроме того, если я использую:

data = iris[['sepal_length', 'sepal_width', 'petal_length']]

вместо:

data = iris.iloc[:, 0:3]

, код также не запускается.

Эти две проблемы приводят к появлению следующего сообщения:

C: \ Users ... \ Anaconda3 \ lib \ site-packages \ ipykernel_launcher.py: 3: SettingWithCopyWarning: значениепытается установить копию фрагмента из DataFrame.Попробуйте вместо этого использовать .loc [row_indexer, col_indexer] = значение

См. Предостережения в документации: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy Это отдельно от пакета ipykernel, поэтому мы можем избежать импорта до C: \ Users \ledag \ Anaconda3 \ lib \ site-packages \ ipykernel_launcher.py: 3: SettingWithCopyWarning: значение пытается быть установлено для копии фрагмента из DataFrame.Попробуйте вместо этого использовать .loc [row_indexer, col_indexer] = значение

Почему это происходит?

...