在新的DataFrame上使用训练有素的分类

时间:2017-06-13 18:43:04

标签: python machine-learning

我已经构建了一个分类器,对标记数据进行了训练和测试。现在我想通过对数据集进行预测而不用标签来进一步测试它。我自己已经知道了标签,但是我想删除它们以进行测试,并让它用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")

它似乎正在起作用,但它不是一个快速的过程,是否有更好的方法或我能做些什么来加快它?

2 个答案:

答案 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)

非常感谢丁!