Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试运行基于knn algo(手写识别)的代码时出错_Python - Fatal编程技术网

Python 尝试运行基于knn algo(手写识别)的代码时出错

Python 尝试运行基于knn algo(手写识别)的代码时出错,python,Python,ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all() 尝试使用knn算法预测数字时出现此错误 data_directory = "../train-images/train-images.idx3-ubyte" label_directory = "../train-labels/train-labels.idx1-ubyte" data_x = npx.convert_from_file(data_directory) labels = npx.conver

ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()

尝试使用knn算法预测数字时出现此错误

data_directory = "../train-images/train-images.idx3-ubyte"
label_directory = "../train-labels/train-labels.idx1-ubyte"
data_x = npx.convert_from_file(data_directory)
labels = npx.convert_from_file(label_directory)
def dist(x1,x2):
    return np.sqrt(sum(x1-x2)**2)

def knn(training_data,label,queryPoint,k=5):

    vals = []
    m = training_data.shape[0]

    for i in range(m):
        d = dist(queryPoint,training_data[i])
        vals.append((d,label[i]))

    vals = sorted(vals)
    vals = vals[:k]
    vals = np.array(vals)
    new_vals = np.unique(vals[:,1],return_counts=True)
    index = new_vals[1].argmax() 
    predict = new_vals[0][index]
    return predict

pred  = knn(data_x,labels,data_x[0])
print(int(pred))
ValueError回溯(最近一次调用)
在()
---->1 pred=knn(数据x、标签、数据x[0])
2个打印(内部(pred))
在knn中(训练数据、标签、查询点、k)
11 VAL.追加((d,标签[i]))
12
--->13 VAL=已排序(VAL)
14 VAL=VAL[:k]
15 VAL=np.数组(VAL)
ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()
这是我每次尝试执行代码时都会遇到的错误

ValueError                                Traceback (most recent call last)
<ipython-input-40-da18b2a967c3> in <module>()
----> 1 pred  = knn(data_x,labels,data_x[0])
      2 print(int(pred))

<ipython-input-39-70c19a203161> in knn(training_data, label, queryPoint, k)
     11         vals.append((d,label[i]))
     12 
---> 13     vals = sorted(vals)
     14     vals = vals[:k]
     15     vals = np.array(vals)

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()