Истинная ценность Серии неоднозначна. Используйте a.empty, a.bool (), a.item (), a.any () или a.all () при сортировке списка - PullRequest
0 голосов
/ 16 марта 2020

Модель KNN для распознавания рукописного ввода ниже является необходимым фрагментом кода.

def dist(x1,x2):
    return np.sqrt(sum((x1-x2)**2))
def KNN(X,Y,query,k=5):
    m=X.shape[0]
    vals=[]
    for i in range(m):
        #print(',,',end='' )
        vals.append((dist(query,X.iloc[i]),Y.iloc[i]))
    vals= sorted(vals)
    vals=vals[:k]
    new_vals,count=np.unique(np.array(vals),return_counts=True)
    index=count.argmax()
    pred=new_values[index]
    return pred

# input data is in the dataframe form , took input using pandas library
pred = []
for i in range(y_train.shape[0]):
    pred.append(KNN(x_train,x_label,y_train.iloc[i]))

ОШИБКА:

ValueError                                Traceback (most recent call last)
<ipython-input-18-87f99a8bd125> in <module>
      1 pred = []
      2 for i in range(y_train.shape[0]):
----> 3     pred.append(KNN(x_train,x_label,y_train.iloc[i]))

<ipython-input-17-7d9c6763b87d> in KNN(X, Y, query, k)
      7         print(',,',end='' )
      8         vals.append((dist(query,X.iloc[i]),Y.iloc[i]))
----> 9     vals= sorted(vals)
     10     vals=vals[:k]
     11     new_vals,count=np.unique(np.array(vals),return_counts=True)

~\Anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
   1476         raise ValueError("The truth value of a {0} is ambiguous. "
   1477                          "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
-> 1478                          .format(self.__class__.__name__))
   1479 
   1480     __bool__ = __nonzero__

ValueError: Истинное значение серии: неоднозначный. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

...