我一直在运行一个机器学习算法,输出的形式是精确度(Precision)、召回率(Recall)和F度量(F-Measure)。
我想将这些数据绘制成图表,以便更清楚地了解实际情况,但我不知道该如何操作。我想可以使用Octave?我在Andrew Ng的课程中听说过它,并且已经安装在我的电脑上,但我不知道如何用它来可视化数据。
有这方面经验的人能告诉我该如何进行,或者提供一些有用的资源吗?
0.011723329425556858 P 0.6000000238418579 R 0.010416666977107525 F1 0.020477816313416650.012895662368112544 P 0.6363636255264282 R 0.01215277798473835 F1 0.0238500855698176480.01406799531066823 P 0.6666666865348816 R 0.013888888992369175 F1 0.0272108845688908450.015240328253223915 P 0.6153846383094788 R 0.013888888992369175 F1 0.027164686128580150.016412661195779603 P 0.6428571343421936 R 0.015625 F1 0.030508474566682390.017584994138335287 P 0.6000000238418579 R 0.015625 F1 0.030456852822595090.01875732708089097 P 0.5625 R 0.015625 F1 0.0304054054054054070.01992966002344666 P 0.529411792755127 R 0.015625 F1 0.0303541315806740880.021101992966002344 P 0.5555555820465088 R 0.0173611119389534 F1 0.033670035275545990.022274325908558032 P 0.5263158082962036 R 0.0173611119389534 F1 0.033613446968169660.023446658851113716 P 0.5 R 0.0173611119389534 F1 0.0335570485262950.0246189917936694 P 0.4761904776096344 R 0.0173611119389534 F1 0.03350083906570289
回答:
我想第一列是你每行之间变化的某个阈值。精确度-召回率图是精确度对召回率的图表。因此,我们可以首先从你的数据中提取这两个列:(假设你的数据保存在prf.data
中)。
cat prf.data | awk '{print $3,$5}'
你将只得到以下两列,并且你可以在Octave中初始化一个二维矩阵:
data = [0.6000000238418579 0.0104166669771075250.6363636255264282 0.012152777984738350.6666666865348816 0.0138888889923691750.6153846383094788 0.0138888889923691750.6428571343421936 0.0156250.6000000238418579 0.0156250.5625 0.0156250.529411792755127 0.0156250.5555555820465088 0.01736111193895340.5263158082962036 0.01736111193895340.5 0.01736111193895340.4761904776096344 0.0173611119389534];
然后在Octave中,下面命令将每行作为图表中的一个数据点打印出来:
plot(data(:,2), data(:,1), 'x')ylabel('precision')xlabel('recall')
看起来随着阈值的增加,你的精确度在下降,而召回率保持不变(例如,当阈值为0.021、0.022、0.023、0.024时)。