gpt4 book ai didi

python - 异构特征的featureUnion

转载 作者:太空狗 更新时间:2023-10-30 00:54:57 25 4
gpt4 key购买 nike

对于一组给定的音频文件,我有 3 个不同的功能集。它们中的每一个都是存储为维度数组的特征矩阵,如下所示:

  • 特征 1:(978*153)
  • 特征 2:(978*800)
  • 特征 3:(978*12)

这些特征中的每一个都是使用不同的技术从音频文件中提取的。

我想做的是将它们一起训练成一个给定的分类器。 (使用管道)。我读过this , this和博客 link在链接 2 中,但它处理不同的提取方法,然后使用分类器。因为我已经有了上面提到的提取数据,所以我想知道下一步该做什么,即如何将它们组合成一个管道。

我知道不能在这里要求直接代码 - 我只想要指针如何组合从不同方法中提取的数据(可能使用管道),例如使用 SVM 对它们进行分类。

最佳答案

假设您想处理独立模型中的一组特征,然后将它们的结果集成在一起,我将在下面写一个答案。但是,如果您只想在单个模型中使用来自所有 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))

现在您已经拥有所有这些东西,您可以创建一个管道,在您的数据集的子集上训练各个模型,然后将它们堆叠在一起形成最终的集成模型。使用一堆 SVM 的示例管道(根据您的要求)可能如下所示:

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'))
])

关于python - 异构特征的featureUnion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32934267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com