【问题标题】:Include feature extraction in pipeline sklearn在管道 sklearn 中包含特征提取
【发布时间】:2017-12-23 16:59:05
【问题描述】:

对于一个文本分类项目,我为特征选择和分类器制作了一个管道。现在我的问题是是否可以在管道中包含特征提取模块以及如何。我查了一些关于它的东西,但它似乎不适合我当前的代码。

这就是我现在拥有的:

# feature_extraction module.  
from sklearn.preprocessing import LabelEncoder, StandardScaler 
from sklearn.feature_extraction import DictVectorizer  
import numpy as np

vec = DictVectorizer() 
X = vec.fit_transform(instances)
scaler = StandardScaler(with_mean=False) # we use cross validation, no train/test set 
X_scaled = scaler.fit_transform(X) # To make sure everything is on the same scale

enc = LabelEncoder()
y = enc.fit_transform(labels)

# Feature selection and classification pipeline
from sklearn.feature_selection import SelectKBest, mutual_info_classif
from sklearn import model_selection
from sklearn.metrics import classification_report
from sklearn.naive_bayes import MultinomialNB
from sklearn.svm import LinearSVC
from sklearn import linear_model
from sklearn.pipeline import Pipeline

feat_sel = SelectKBest(mutual_info_classif, k=200)  
clf = linear_model.LogisticRegression() 
pipe = Pipeline([('mutual_info', feat_sel), ('logistregress', clf)])) 
y_pred = model_selection.cross_val_predict(pipe, X_scaled, y, cv=10)

如何将 dictvectorizer 放在管道中的标签编码器之前?

【问题讨论】:

    标签: python machine-learning scikit-learn pipeline feature-extraction


    【解决方案1】:

    你会这样做。假设instances 是一个类似字典的对象,如API 中所指定,那么只需像这样构建您的管道:

    pipe = Pipeline([('vectorizer', DictVectorizer()),
                     ('scaler', StandardScaler(with_mean=False)),
                     ('mutual_info', feat_sel),
                     ('logistregress', clf)])
    

    进行预测,然后调用cross_val_predict,将instances 传递为X:

    y_pred = model_selection.cross_val_predict(pipe, instances, y, cv=10)
    

    【讨论】:

    • 是的,instances 是一个字典。那么我在de特征提取中不需要再做fit.transform了?
    • 正确,你不必做任何fit_transform。管道会自动执行此操作。
    猜你喜欢
    • 2016-12-11
    • 2019-08-10
    • 1970-01-01
    • 2016-10-11
    • 2016-08-06
    • 2016-03-26
    • 2021-08-14
    • 2017-12-16
    • 2017-12-29
    相关资源
    最近更新 更多