首页 > 解决方案 > 多变量时间序列分类中的特征选择

问题描述

我有一个带有9变量的时间序列数据。我从中找到了 4 个功能。例如,我计算现在我的列从变量np.mean(), np.std(), np.var(), np.ptp()扩展到变量。369

sklearn可用于单变量数据的特征选择方法。因此,当我将这些方法应用于多元数据时,他们不会发现是否np.mean()np.std(). 他们只会从 36 个变量中找出最好的变量。

所以我想知道,处理多元数据的正确方法应该是什么。

标签: pythonnumpyscikit-learnfeature-selection

解决方案


让我总结一下,以确保我首先了解您的问题。你有 9 个变量的时间序列数据,意味着你有 9 个长度通道L,所以一个 shape 矩阵,对L x 9吗?现在您计算每个通道上的 4 个特征,使其成为 shape 矩阵L x 36

例如sklearn.selectKBest,所做的是选择 36 个特征向量中的 k 个最佳特征。因此,例如,如果k = 18您在转换后会得到一个形状矩阵L x 18。它选择了 18 个最佳特征。

您能否详细说明您的问题以及您想要实现的目标?可能有一些代码?

编辑:

查看选择了哪些功能的可能解决方案:

from sklearn.datasets import load_digits
from sklearn.feature_selection import SelectKBest, chi2
X, y = load_digits(return_X_y=True)
# X.shape = (1797, 64)
kbest = SelectKBest(chi2, k=20)
kbest.fit(X, y)
X_new = kbest.transform(X)
# X_new.shape = (1797, 20)
selected_features = kbest.get_support()
# Returns a mask of X.shape[1]
array([False, False, False, False, False,  True,  True, False, False,
       False, False, False, False,  True, False, False, False, False,
       False,  True,  True,  True, False, False, False, False,  True,
       False,  True, False,  True, False, False,  True,  True, False,
       False, False, False, False, False,  True,  True,  True,  True,
       False,  True, False, False, False, False, False, False, False,
        True, False, False, False,  True, False, False,  True,  True,
       False])

现在您只需要记住哪些特征对应于用true.

受 sklearn-documentation 的启发SelectKBesthttps://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectKBest.html#sklearn.feature_selection.SelectKBest


推荐阅读