Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么sklearn的LabelBinarizer速度慢?_Python_Performance_Scikit Learn - Fatal编程技术网

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)