Python 级数的真值是模糊的。排序列表时使用a.empty、a.bool()、a.item()、a.any()或a.all()

Python 级数的真值是模糊的。排序列表时使用a.empty、a.bool()、a.item()、a.any()或a.all(),python,machine-learning,knn,Python,Machine Learning,Knn,手写识别的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= sorte

手写识别的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回溯(最近一次调用)
在里面
1 pred=[]
2对于范围内的i(y_列形状[0]):
---->3预附加(KNN(x_列,x_标签,y_列.iloc[i]))
在KNN(X,Y,query,k)中
7打印(“,”,结束=“”)
8 vals.append((dist(query,X.iloc[i]),Y.iloc[i]))
---->9 VAL=已排序(VAL)
10瓦耳=瓦耳[:k]
11新的\u VAL,计数=np.unique(np.array(VAL),返回\u计数=True)
~\Anaconda3\lib\site packages\pandas\core\generic.py in\uuuu非零(self)
1476 raise VALUERROR(“a{0}的真值不明确。”
1477“使用a.empty、a.bool()、a.item()、a.any()或a.all()
->1478.格式(自身名称)
1479
1480 uuu bool uuuu=uuuu非零__

ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。

您是否将其复制/粘贴到谷歌搜索中?这是一个非常常见的问题,这是一个基本的调试步骤。这是否回答了您的问题?在进行
sorted
调用之前,您希望
vals
包含什么类型的值?它实际上包含什么类型的值?@KarlKnechtel它实际上是元组列表(int,int),我想根据第一个整数对它进行排序。
。。。元组列表(int,int).
-错误消息暗示
VAL
是或包含Pandas Series或numpy ndarray的-在try/except中检查
VAL
,并确保它是什么。您可能需要编写一个键函数来对数据进行排序。对于a,您应该包括一个需要排序的
VAL
示例。