【问题标题】:sklearn pipeline with PCA on feature subset using FunctionTransformer使用 FunctionTransformer 在特征子集上使用 PCA 的 sklearn 管道
【发布时间】:2019-05-02 20:22:38
【问题描述】:

考虑链接 PCA 和回归的任务,其中 PCA 执行降维,回归执行预测。

示例取自 sklearn 文档:

import numpy as np
import matplotlib.pyplot as plt

from sklearn import linear_model, decomposition, datasets
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV

logistic = linear_model.LogisticRegression()

pca = decomposition.PCA()
pipe = Pipeline(steps=[('pca', pca), ('logistic', logistic)])

digits = datasets.load_digits()
X_digits = digits.data
y_digits = digits.target

n_components = [5, 10]
Cs = np.logspace(-4, 4, 3)

param_grid = dict(pca__n_components=n_components, logistic__C=Cs)
estimator = GridSearchCV(pipe,param_grid)
estimator.fit(X_digits, y_digits)

如何使用FunctionTransformer 仅对我的特征集的一个子集执行降维(例如,将 PCA 限制为 X_digits 的最后十列)?

【问题讨论】:

    标签: python scikit-learn pca


    【解决方案1】:

    您可以首先创建一个函数(下面称为last_ten_columns),它返回输入X_digits 的最后10 列。创建指向函数的函数转换器,并将其用作管道的第一步。

    import numpy as np
    import matplotlib.pyplot as plt
    
    from sklearn import linear_model, decomposition, datasets
    from sklearn.pipeline import Pipeline
    from sklearn.model_selection import GridSearchCV
    from sklearn.preprocessing import FunctionTransformer
    
    logistic = linear_model.LogisticRegression()
    
    pca = decomposition.PCA()
    
    def last_ten_columns(X):
        return X[:, -10:]
    
    func_trans = FunctionTransformer(last_ten_columns)
    
    pipe = Pipeline(steps=[('func_trans',func_trans), ('pca', pca), ('logistic', logistic)])
    
    digits = datasets.load_digits()
    X_digits = digits.data
    y_digits = digits.target
    
    n_components = [5, 10]
    Cs = np.logspace(-4, 4, 3)
    
    param_grid = dict(pca__n_components=n_components, logistic__C=Cs)
    estimator = GridSearchCV(pipe, param_grid)
    estimator.fit(X_digits, y_digits)
    

    【讨论】:

      猜你喜欢
      • 2014-07-30
      • 1970-01-01
      • 2020-12-29
      • 2016-05-04
      • 2012-10-29
      • 1970-01-01
      • 2017-12-23
      • 2019-04-03
      • 2020-10-07
      相关资源
      最近更新 更多