python联盟是什么意思_python – 功能联盟的异质特征

假设您想要处理独立模型中的一组特征,然后将它们的结果合并在一起,我将在下面写下答案.但是,如果您只想在单个模型中使用来自所有3种特征提取技术的特征,那么只需将它们一起附加到单个数据集中并将其用于训练.

我认为在Pipeline中最简单的方法是创建一个包含所有三种技术特征的单个(978 * 965)pandas DataFrame.然后在您的管道中,您可以定义一个选择功能组的自定义类,例如,这应该工作:

class VarSelect(BaseEstimator, TransformerMixin):

def __init__(self, keys):

self.keys = keys

def fit(self, x, y=None):

return self

def transform(self, df):

return df[self.keys].values

然后,您将需要一个适合模型的简单类,然后将其转换为提供预测(将模型堆叠在一起所需).这样的事情应该有效(取决于你的问题是回归还是分类):

class ModelClassTransformer(BaseEstimator, TransformerMixin):

def __init__(self, model):

self.model = model

def fit(self, *args, **kwargs):

self.model.fit(*args, **kwargs)

return self

def transform(self, X, **transform_params):

return DataFrame(self.model.predict_proba(X))

class ModelRegTransformer(BaseEstimator, TransformerMixin):

def __init__(self, model):

self.model = model

def fit(self, *args, **kwargs):

self.model.fit(*args, **kwargs)

return self

def transform(self, X, **transform_params):

return DataFrame(self.model.predict(X))

现在您拥有了所有这些东西,您可以创建一个管道,在数据集的子集上训练单个模型,然后将它们堆叠在最终的整体模型中.使用一堆SV​​M(如您所请求的)的示例管道可能如下所示:

Pipeline([

('union', FeatureUnion([

('modelA', Pipeline([

('var', VarSelect(keys=vars_a)),

('scl', StandardScaler(copy=True, with_mean=True, with_std=True)),

('svm', ModelRegTransformer(SVC(kernel='rbf')))),

])),

('modelB', Pipeline([

('var', VarSelect(keys=vars_b)),

('scl', StandardScaler(copy=True, with_mean=True, with_std=True)),

('svm', ModelRegTransformer(SVC(kernel='rbf'))),

])),

('modelC', Pipeline([

('var', VarSelect(keys=vars_c)),

('scl', StandardScaler(copy=True, with_mean=True, with_std=True)),

('svm', ModelRegTransformer(SVC(kernel='rbf'))),

]))

])),

('scl', StandardScaler(copy=True, with_mean=True, with_std=True)),

('svm', SVC(kernel='rbf'))

])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值