【发布时间】:2018-12-05 15:23:38
【问题描述】:
import pickle
def compare_pred_with_true_values(weights):
for vect in weights:
if vect[1] <= 0.5:
vect[1] = 0
else:
vect[1] = 1
return weights
def counter(weights):
count_0_knowing_0 = 0
count_1_knowing_1 = 0
count_0_knowing_1 = 0
count_1_knowing_0 = 0
for vect in weights:
if int(vect[0])==0 and vect[0]==vect[1]:
count_0_knowing_0 += 1
elif int(vect[0])==1 and vect[0]==vect[1]:
count_1_knowing_1 += 1
elif int(vect[0])==1 and vect[0]!=vect[1]:
count_0_knowing_1 += 1
else:
count_1_knowing_0 +=1
json = {"count_0_knowing_0": count_0_knowing_0,
"count_1_knowing_1": count_1_knowing_1,
"count_0_knowing_1": count_0_knowing_1,
"count_1_knowing_0": count_1_knowing_0}
return json
if __name__ == "__main__":
weights = pickle.load(open("weights_extension.pkl", "rb"))
weights = [[vect[0], vect[1]] for vect in weights]
weights_copy = compare_pred_with_true_values(weights)
json = counter(weights_copy)
print(json)
weights 只是[[0, 0.0013], [1, 0.578], ..., [0, 0.0012]] 形式的列表,输出为{"count_0_knowing_0": 4283, "count_1_knowing_1": 39717, "count_0_knowing_1": 1283, "count_1_knowing_0": 320} 该代码用于查看“预测相对于真实值有多好?”
代码开始时用于测试,但现在我需要将其插入到我的主代码中,但这远非最佳。我不知道我们是否能找到一个可以做同样工作的 python 库。使用 Scikit-learn 还是 scipy?
我们如何扩展该代码以便它可以处理多种类型的标签?这里使用标签 0 和 1,但是我们可以扩展它以便它可以使用标签 {-n, .., -2, -1, 0, 1, 2, 3, 4, ..., m}?
【问题讨论】:
-
是的,有一种简洁的方法。任何重复都可以*删除。你在哪里迷茫? *在这种情况下