Igo*_*nov 6 python scikit-learn
我正在尝试创建一个转换器,将列的类型从“对象”更改为“类别”,因此我为此创建了自定义类:
from sklearn.base import BaseEstimator, TransformerMixin
class ChangeToCategory(BaseEstimator, TransformerMixin):
def __init__(self, to_categories = None):
self.to_categories_ = to_categories
def fit(self, X, y=None):
return self
def transform(self, X, y=None):
X_ = X.copy()
for cat in self.to_categories_:
X_[cat] = X_[cat].astype("category")
return X_
Run Code Online (Sandbox Code Playgroud)
但是当我尝试创建此类的对象时出现错误:
ChangeToCategory(to_categories=["Sex", "Embarked"])
AttributeError: 'ChangeToCategory' object has no attribute 'to_categories'
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?基于错误,我假设它在某个地方尝试调用属性“to_categories”,但我使用属性“to_categories_” - 带下划线,并且没有来自 init 的变量,我不会在任何地方调用它。
所以,我发现我错了。从sklearn 文档中,您必须将所有估计器参数初始化为类的属性。
此外,init接受的每个关键字参数都应该对应于实例上的一个属性。Scikit-learn 依靠此来查找在进行模型选择时在估计器上设置的相关属性。
| 归档时间: |
|
| 查看次数: |
1265 次 |
| 最近记录: |