Модель 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 ().