使用Scikit-learn包的ClassNamePrefixFeaturesOutMixin

举报
yd_37369233 发表于 2026/08/22 09:55:37 2026/08/22
【摘要】 ClassNamePrefixFeaturesOutMixin 是 scikit-learn 在 sklearn.base 模块中提供的一个 Mixin 类(混合类)。它的主要作用是为那些需要自动生成输出特征名称的转换器(Transformer)提供一个标准化的方法。这个 Mixin 是 scikit-learn 中 get_feature_names_out 约定的一部分,常用于 PCA ...

ClassNamePrefixFeaturesOutMixin 是 scikit-learn 在 sklearn.base 模块中提供的一个 Mixin 类(混合类)。它的主要作用是为那些需要自动生成输出特征名称的转换器(Transformer)提供一个标准化的方法

这个 Mixin 是 scikit-learn 中 get_feature_names_out 约定的一部分,常用于 PCA 等转换器。

核心功能与使用方法

这个 Mixin 的核心是为你的类自动添加 get_feature_names_out 方法。其命名规则和前提条件如下:

  • 命名规则:生成的输出特征名称会以类名的小写形式作为前缀,后接数字索引。
    • 例如,如果你的类名为 MyEstimator,并且输出了 2 个特征,那么生成的特征名称将是 ['myestimator0', 'myestimator1']
  • 前提条件:使用此 Mixin 的类,在 fit 方法中必须定义一个名为 _n_features_out 的属性,其值为转换器输出特征的数量。

代码示例

下面是一个简单的自定义转换器示例,展示了如何使用这个 Mixin。

import numpy as np
from sklearn.base import ClassNamePrefixFeaturesOutMixin, BaseEstimator

# 1. 继承 ClassNamePrefixFeaturesOutMixin 和 BaseEstimator
class MyEstimator(ClassNamePrefixFeaturesOutMixin, BaseEstimator):
    def fit(self, X, y=None):
        # 2. 在 fit 方法中必须设置 _n_features_out
        #    这里假设输出特征的数量等于输入特征的数量
        self._n_features_out = X.shape[1]
        return self

    def transform(self, X):
        # 假设这是一个简单的变换,比如返回输入本身
        return X

# 使用示例
X = np.array([[1, 2], [3, 4]])
estimator = MyEstimator()
estimator.fit(X)

# 自动获得 get_feature_names_out 方法
feature_names = estimator.get_feature_names_out()
print(feature_names)
# 输出: array(['myestimator0', 'myestimator1'], dtype=object)

总结

简而言之,ClassNamePrefixFeaturesOutMixin 是一个实用的工具,它能够让你在创建自定义转换器时,无需手动编写 get_feature_names_out 方法,只需遵循约定设置 _n_features_out 属性,即可自动获得符合 scikit-learn 标准的特征命名功能。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。