2016-07-06 74 views
0

我是一个初学者,在我的代码面对错误:类型错误:必需的参数“对象”(位置1)未找到

这个错误得到解决:

Traceback (most recent call last): 
    File "/Users/ankitchaudhari/PycharmProjects/Learn/datascience/gg.py", line 26, in <module> 
    label = kmeans(data, k) 
    File "/Users/ankitchaudhari/PycharmProjects/Learn/datascience/gg.py", line 20, in kmeans 
    labels = KMeans(n_clusters=k).fit_predict(data) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/cluster/k_means_.py", line 830, in fit_predict 
    return self.fit(X).labels_ 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/cluster/k_means_.py", line 812, in fit 
    X = self._check_fit_data(X) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/cluster/k_means_.py", line 787, in _check_fit_data 
    if X.shape[0] < self.n_clusters: 
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 

但新的错误是: 新的错误:d = np.array()

类型错误:必需的参数 '对象'(位置1)没有找到

这是我的代码:

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, 10]) 

df = pd.DataFrame(data) 

df 

def kmeans(data, i): 

    labels = KMeans(n_clusters=k).fit_predict(data) 
    return labels 

sse = 0 

for i in k: 

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

plt.plot(d, k) 
plt.show() 

以前的错误已解决。请帮我解决这个错误。

+0

请出示完整的错误回溯。 – BrenBarn

回答

0

在你的“for”循环,第二个参数应该是“我”而不是“K”:

label = kmeans(data, i) 
+0

新错误:d = np.array() TypeError:必需的参数'object'(pos 1)not found –

+1

np.array方法有必需的参数(它不是全部可选的)。你的代码中还有另一个问题。你写了d.append(sse)。正确的格式是np.append(d,<要附加的数组>) – Joe

相关问题