Python 为什么sklearn的LabelBinarizer速度慢?
我试图将Python 为什么sklearn的LabelBinarizer速度慢?,python,performance,scikit-learn,Python,Performance,Scikit Learn,我试图将sklearn中的LabelBinarizer与简单字典的性能进行比较: from sklearn.preprocessing import LabelBinarizer import time sample_list = list('abcdefg') lb = LabelBinarizer() lb.fit(dep_tag_list) lb_t = lb.transform(sample_list) sample_dict = {key:value for (key,value)
sklearn
中的LabelBinarizer
与简单字典的性能进行比较:
from sklearn.preprocessing import LabelBinarizer
import time
sample_list = list('abcdefg')
lb = LabelBinarizer()
lb.fit(dep_tag_list)
lb_t = lb.transform(sample_list)
sample_dict = {key:value for (key,value) in zip(sample_list, lb_t)}
此代码运行时间:--2.9169740676879883秒---
这段代码运行时:--0.6299951076507568秒---
我是在比较苹果吗?为什么LabelBinarizer这么慢?LabelBinarizer是一个包装器。也可以在某些其他scikit实用程序内部使用。因此,它需要注意传递给它的数据是否合适 为此,它对传递的数据执行多个检查。请查看以下的源代码:
因此,您可以看到它正在检查传递的
y
是否属于可以由scikit算法处理的合适类型。之后,数据被传递到label_binarize
which,后者对其执行其他附加检查。我认为这就是它缓慢的原因。谢谢你的回复。我想比较一下从熊猫身上得到的假人更合适。得到傻瓜仍然是一条路faster@user1700890因为get_dummies仍然不会做我提到的所有检查抱歉,我不清楚。得到你的假人要比labelbinarizer@user1700890是的,我知道。get_dummies的速度更快,因为它不会像我提到的LabelBinarizer那样进行所有检查
start_time = time.time()
result = lb.transform(sample_list*1000000)
print("--- %s seconds ---" % (time.time() - start_time))
start_time = time.time()
result = [sample_dict[el] for el in sample_list*1000000]
print("--- %s seconds ---" % (time.time() - start_time))
y_is_multilabel = type_of_target(y).startswith('multilabel')
if y_is_multilabel and not self.y_type_.startswith('multilabel'):
raise ValueError("The object was not fitted with multilabel"
" input.")
return label_binarize(y, self.classes_,
pos_label=self.pos_label,
neg_label=self.neg_label,
sparse_output=self.sparse_output)