我已经构建了一个分类器,对标记数据进行了训练和测试。现在我想通过对数据集进行预测而不用标签来进一步测试它。我自己已经知道了标签,但是我想删除它们以进行测试,并让它用0预测打印出值,这样我就可以自己比较它的准确性。我正在使用以下代码迭代我的数据集并对DataFrame中的每一行进行预测;
malware = set()
for index, row in dataset.iterrows():
res = clf.predict([row])
if res == 0:
malware.add(index)
print(malware)
f.write(str(malware) + "\n")
它似乎正在起作用,但它不是一个快速的过程,是否有更好的方法或我能做些什么来加快它?
答案 0 :(得分:0)
使用for循环迭代数据集中的元素通常很慢。您要做的是将函数应用于列中的每个元素,并根据结果生成一系列标签。 (顺便说一下,假设你正在使用Pandas作为数据帧)
labels=dataset.apply(clf.predict)
然后,您可以使用for循环扫描此系列。那应该是相对即时的。
答案 1 :(得分:0)
经过一些工作后,我把丁的评论变成了一个可行的答案,速度要快得多。我的新代码是;
from collections import OrderedDict
malware = []
malware.append(OrderedDict.fromkeys(dataset.index[clf.predict(dataset) == 0]))
print (malware)
非常感谢丁!