2016-07-06 3 views
-2
Error: 
Traceback (most recent call last): 
File "/Users/ankitchaudhari/PycharmProjects/Learn/datascience/gg.py", line 33, in <module> plt.plot(a, k) 
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/pyplot.py", line 3154, in plot 
ret = ax.plot(*args, **kwargs) 
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/__init__.py", line 1812, in inner 
return func(ax, *args, **kwargs) 
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/axes/_axes.py", line 1424, in plot 
for line in self._get_lines(*args, **kwargs): 
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/axes/_base.py", line 386, in _grab_next_args 
for seg in self._plot_args(remaining, kwargs): 
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/axes/_base.py", line 364, in _plot_args 
x, y = self._xy_from_xy(x, y) 
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/axes/_base.py", line 223, in _xy_from_xy 
raise ValueError("x and y must have same first dimension") 
ValueError: x and y must have same first dimension 

は、どのように私はこのPythonコード内のクラスタのプロットを得ることができますか?どのようにこのPythonコード内のクラスタのプロットを取得しますか? ValueError:xとyが同じ最初の次元を持っている必要があります

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

data = np.array([[1, 2], 
       [5, 8], 
      [1.5, 1.8], 
       [8, 8], 
       [9, 11], 
       [1, 0.6], 
       [2, 2]]) 

k = np.array([2,3,4,5,6,7]) 
df = pd.DataFrame(data) 
df 


def kmeans(data, k): 
    labels = KMeans(n_clusters=k).fit_predict(data) 
    return labels 

sse = 0 
for i in k: 
    label = kmeans(data, i) 
    cluster_mean = df.mean() 
    d = np.zeros([], dtype=float) 

    for j in range(len(label)): 
     sse += sum(pow((data[j]) - cluster_mean, 2)) 
     a = np.append(d, sse) 

plt.scatter(a, k) 
plt.show() 

生成されたプロットがクラスタのすべてのポイントを表示していません。 aとkの値は等しくなく、曲線でプロットすることが問題になっています。誰か助けてくれますか?

ありがとうございます。あなたのインデントが壊れている

+0

:あなたは内部iループjループを開始マスト?どちらが省略されていますか? – MisterMiyagi

答えて

1

sseaが計算されている場合

sse = 0 
for i in k: 
    label = kmeans(data, i) 
    cluster_mean = df.mean() 
    d = np.zeros([], dtype=float) 
# for i in k has finished here 
# label, cluster_mean and d frozen in their last state 
for j in range(len(label)): 
    sse += sum(pow((data[j]) - cluster_mean, 2)) 
    a = np.append(d, sse) 

は基本的には、これだけkの最後のiのために行われます。ポイントが表示されているどの* *

sse = 0 
for i in k: 
    label = kmeans(data, i) 
    cluster_mean = df.mean() 
    d = np.zeros([], dtype=float) 
    # same indentation as loop body! 
    for j in range(len(label)): 
    sse += sum(pow((data[j]) - cluster_mean, 2)) 
    a = np.append(d, sse) 
関連する問題