比较 kNN 中的多个数组
Compare multiple array in kNN
我正在尝试针对不同的 k 值获取我的 kNN 的准确性。数组 A 是三个不同的 k 值的结果。我想将 A 中的每个原始数据与 B 和 return 进行比较,每个原始数据的精度值。这是我的代码,
import numpy as np
A = [[1, 0, 0, 1, 1, 1, 1, 1, 1, 0], [1, 0, 0, 1, 1, 1, 0, 1, 0, 0], [1, 0, 0, 0, 1, 1, 0, 1, 1, 1]]
B = [1, 0, 0, 1, 0, 1, 0, 1, 1, 1]
predictions = np.array(A)
y_test = np.array(B)
def getAccuracy(y_test, predictions):
correct = 0
w = []
for i in range(predictions.shape[0]): # I want to compare for each raw in A with B
for x in range(len(y_test)):
if y_test[x] == predictions[i,x]:
correct += 1
acc = (correct/len(y_test)) * 100.0
return acc
return w.append(acc)
test = getAccuracy(y_test, predictions)
print(test)
但我得到的输出是 0.0
。感谢您在这方面帮助我。
对于二元分类,您不必比较值,通过简单的加法即可轻松完成:
A = [[1, 0, 0, 1, 1, 1, 1, 1, 1, 0], [1, 0, 0, 1, 1, 1, 0, 1, 0, 0], [1, 0, 0, 0, 1, 1,
0, 1, 1, 1]]
B = [1, 0, 0, 1, 0, 1, 0, 1, 1, 1]
predictions = np.array(A)
y_test = np.array(B)
for c in A:
acc = sum([((x*y)+(x-1)*(y-1)) for x,y in zip(c,B)])/len(B)
print(acc)
>>>0.7
>>>0.7
>>>0.8
所以为什么 ((x*y)+(x-1)*(y-1))
有效。
好吧,如果你尝试这四种情况:(0,0),(0,1),(1,0),(1,1)
你会发现对于 类 不同的情况,总和的每一部分都等于 0 而对于 类相等,只有总和的一部分不等于 0 而等于 1。因此对于每一步,如果 类 相等,则为 1,否则为 0。
这是一个小技巧,大大加快了计算精度的速度。
我正在尝试针对不同的 k 值获取我的 kNN 的准确性。数组 A 是三个不同的 k 值的结果。我想将 A 中的每个原始数据与 B 和 return 进行比较,每个原始数据的精度值。这是我的代码,
import numpy as np
A = [[1, 0, 0, 1, 1, 1, 1, 1, 1, 0], [1, 0, 0, 1, 1, 1, 0, 1, 0, 0], [1, 0, 0, 0, 1, 1, 0, 1, 1, 1]]
B = [1, 0, 0, 1, 0, 1, 0, 1, 1, 1]
predictions = np.array(A)
y_test = np.array(B)
def getAccuracy(y_test, predictions):
correct = 0
w = []
for i in range(predictions.shape[0]): # I want to compare for each raw in A with B
for x in range(len(y_test)):
if y_test[x] == predictions[i,x]:
correct += 1
acc = (correct/len(y_test)) * 100.0
return acc
return w.append(acc)
test = getAccuracy(y_test, predictions)
print(test)
但我得到的输出是 0.0
。感谢您在这方面帮助我。
对于二元分类,您不必比较值,通过简单的加法即可轻松完成:
A = [[1, 0, 0, 1, 1, 1, 1, 1, 1, 0], [1, 0, 0, 1, 1, 1, 0, 1, 0, 0], [1, 0, 0, 0, 1, 1,
0, 1, 1, 1]]
B = [1, 0, 0, 1, 0, 1, 0, 1, 1, 1]
predictions = np.array(A)
y_test = np.array(B)
for c in A:
acc = sum([((x*y)+(x-1)*(y-1)) for x,y in zip(c,B)])/len(B)
print(acc)
>>>0.7
>>>0.7
>>>0.8
所以为什么 ((x*y)+(x-1)*(y-1))
有效。
好吧,如果你尝试这四种情况:(0,0),(0,1),(1,0),(1,1)
你会发现对于 类 不同的情况,总和的每一部分都等于 0 而对于 类相等,只有总和的一部分不等于 0 而等于 1。因此对于每一步,如果 类 相等,则为 1,否则为 0。
这是一个小技巧,大大加快了计算精度的速度。