字典计算每个类别的准确率
程序员文章站
2022-06-12 16:22:45
...
1. 主任务: 字典中每个种类的准确率
1.1 分母: 首先计算每个种类的总数!
for value in label:
# get(value, num)函数的作用是获取字典中value对应的键值, num=0指示初始值大小。
label_cout[value] = label_cout.get(value, 0) + 1
label_acc[value] = label_acc.get(value, 0)
print(label_cout)
print(label_acc)
1.2 分子:再次计算每个种类正确的数
第一步: 获取种类字典:错误的做法
#这是错误的做法,因为这样做set集合是无序的! 顺序就和分母不一样了,无法进行后面的操作
label_acc = {
label_text: 0 for label_text in set(label) # 将唯一化
}
print(len(label_acc))
正确的是上面的
label_acc[value] = label_acc.get(value, 0)
第二步: 记录正确类的个数
results = model.predict(data, max_seq_len=50, batch_size=1, use_gpu=True) #获取每行输入数据的预测结果
for idx, item in enumerate(results):
sum = sum + 1; #所有的数据集总和
if results[idx] == label[idx]:
# print("OHHHH data: {}".format(data[idx]), "predict:{}".format(results[idx]),
# "right:{}".format(label[idx]))
right = right + 1; #如果是正确的,那么就加一
print(results[idx])
label_acc[results[idx]] += 1 #正确的,则从字典中寻找到指定key也加一
第三步: 相除得到准确率
#由于我们在定义两个字典时,key标签都是对应的,所以直接除,并更新label_acc即可
for key in label_acc.keys():
label_acc[key] = label_acc[key] / label_cout[key]
2. 附加内容
1. set是无序的!!! 你改成set集合后序列就无序了,而计算每个类别的准确性,必须是类型顺序不变的
2.从linux上下载文件
zc XXX
3. 读CSV文件没事,但是在写入csv文件是乱码
df.to_csv("/home/wxx/progressfiles/project_pc_NLP/Texts_Classification/res_all_label.csv",
encoding='utf_8_sig', sep=",", index=0)
4. 如果出现在写入csv文件时,单元格错位问题,说明你的分隔符不对
5. 写入excel文件中
https://blog.csdn.net/pikaqiubula/article/details/113781466
6. 将其它的放入到DataFrame中: 转变为Series ,再设置columns
df = pd.DataFrame(pd.Series(d1), columns=['right'])
7. python将字典转换为dataframe数据框
下一篇: 3个解析url的php函数