Ale*_*xNe 5 python scikit-learn
给定 sklearn tranformer t,有没有办法确定是否t更改任何给定输入数据集的列/列顺序X,而不将其应用于数据?
例如,和t = sklearn.preprocessing.StandardScaler的列之间存在一对一的映射,即,而 的情况显然不是这样。Xt.transform(X)X[:, i] -> t.transform(X)[:, i]sklearn.decomposition.PCA
其推论是:我们能否知道,通过应用 ,输入的列将如何改变t,例如已经安装的选择了哪些列sklearn.feature_selection.SelectKBest。
我不是在寻找针对特定变压器的解决方案,而是在寻找适用于所有或至少多种变压器的解决方案。
如果需要,请随意实现您自己的 Pipeline 类或包装器。
并不是所有的“变形金刚”都有这个.get_feature_names_out方法。sklearn github中讨论了它的实现。在同一个链接中,您可以看到,引用@thomasjpfan,_OneToOneFeatureMixin变压器使用一个类,在输入和输出特征之间具有简单的一对一对应关系
仅限于 sklearn,我们可以检查 Transformer 或 Estimator 是否是 的子类_OneToOneFeatureMixin,例如:
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from sklearn.feature_selection import SelectKBest
from sklearn.base import _OneToOneFeatureMixin
tf = {'pca':PCA(),'standardscaler':StandardScaler(),'kbest':SelectKBest()}
[i+":"+str(issubclass(type(tf[i]),_OneToOneFeatureMixin)) for i in tf.keys()]
['pca:False', 'standardscaler:True', 'kbest:False']
Run Code Online (Sandbox Code Playgroud)
这些将是_OneToOneFeatureMixin 的源代码
| 归档时间: |
|
| 查看次数: |
320 次 |
| 最近记录: |