print("花费的时间为:", time.time() - start_time)
plot_pr(0.6, precision, recall, "pos")
实验结果:
第0次测试的准确率为:0.81071
第1次测试的准确率为:0.79643
第2次测试的准确率为:0.79643
第3次测试的准确率为:0.80000
第4次测试的准确率为:0.80714
第5次测试的准确率为:0.81071
第6次测试的准确率为:0.75714
第7次测试的准确率为:0.78214
第8次测试的准确率为:0.78214
第9次测试的准确率为:0.81429
precision recall f1-score support
neg 0.84 0.79 0.81 145
pos 0.79 0.84 0.81 135
avg / total 0.82 0.81 0.81 280
平均精度率为: 0.795714285714
花费时间为: 12.1490001678
通过上图可以看出,如果选择的阈值过低,那么更多的测试样本都将分为1类,因此召回率得到提升,但是要牺牲相应的准确率。 注意precision_recall_curve()方法中的thresholds中的阈值是逐渐增大的,对应到图像是就会,x轴从左到右对应的阈值是逐渐减小的。
# -*- encoding:utf-8 -*-
import matplotlib.pyplot as plt
from matplotlib import animation
import numpy as np
#加载数据集
def loadDataSet():
'''
:return: 输入向量矩阵和输出向量
'''
dataMat=[]
labelMat=[]
fr=open('test.txt','r')#一共有三列,每一列为x1,x2,Y
for line in fr.readlines():
lineArr=line.strip().split('##')
#注意在这里将字符串转换成float型的时候总是遇到问题
#感觉每一行的开头存在其他字符,所以我们多添加了一列"##"分隔符,是的第一个有效数字从第二个开始