Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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对象相等_Python_Scikit Learn - Fatal编程技术网

Python 断言两个sklearn对象相等

Python 断言两个sklearn对象相等,python,scikit-learn,Python,Scikit Learn,我的问题很简单,分为两个子问题: 我有两个LabelEncoders,具有完全相同的参数.classes\uu。但当我将它们与==进行比较时,它们似乎有所不同。如何检查它们是否相等 我还想检查两个sklearn模型(RandomForest已安装)是否相等?==检查似乎不起作用 如果将两个对象与==进行比较,将返回False,因为它们具有不同的id 您最好重写类的函数。如注释中所述,我们需要为创建自己的条件。 以下是我的版本: 来自sklearn.preprocessing导入标签编码器

我的问题很简单,分为两个子问题:

  • 我有两个
    LabelEncoder
    s,具有完全相同的参数
    .classes\uu
    。但当我将它们与
    ==
    进行比较时,它们似乎有所不同。如何检查它们是否相等

  • 我还想检查两个sklearn模型(
    RandomForest
    已安装)是否相等?==检查似乎不起作用


如果将两个对象与==进行比较,将返回False,因为它们具有不同的id


您最好重写类的函数。

如注释中所述,我们需要为
创建自己的条件。
以下是我的版本:

来自sklearn.preprocessing导入标签编码器
将numpy作为np导入
target=pd.Series(np.random.choice(['yes','no'],(20,))
类别MyLabelEncoder(标签编码器):
定义(自身、其他):
如果np.array_等于(其他类u),
self.classes(self.classes):
返回真值
返回错误
le1=MyLabelEncoder().fit(目标)
le2=MyLabelEncoder().fit(目标)
le1==le2
#真的

对于DecisionTree,已经提供了一个解决方案。您可以将其扩展为
RandomForestClassifier

,您可能希望子类化
LabelEncoder
,并重写
\uuuueq\uu
函数。有关如何操作,请参阅,谢谢您的回复。但我也在想,为什么LabelEncoder的基本eq函数在拥有相同的类时没有返回True:是否有其他元素需要考虑以检查相等性?scikit learn有实例化模型的约定,并且在模型上使用fit()&transform()方法。因此,一个模型的两个不同对象是不相等的,这是由设计决定的。您可以自由重写此行为,但它不适用于库。