Python 多变量时间序列分类中的特征选择

Python 多变量时间序列分类中的特征选择,python,numpy,scikit-learn,feature-selection,Python,Numpy,Scikit Learn,Feature Selection,我有一个带有9变量的时间序列数据。我从中发现了4个特点。 例如,我计算np.mean()、np.std()、np.var()、np.ptp()现在我的列从9变量扩展到36变量 sklearn中提供的特征选择方法适用于单变量数据。因此,当我将这些方法应用于多元数据时,他们不会发现np.mean()是否比np.std()更好。他们只需从36个变量中找出最好的变量 所以我想知道,处理多元数据的正确方法应该是什么 让我总结一下,以确保我首先理解了您的问题。你有9个变量的时间序列数据,这意味着你有9个长度

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

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


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

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

例如,
sklearn.selectKBest
所做的是选择36个特征向量中的k个最佳特征。因此,例如,如果
k=18
,则在变换后将得到一个形状为
lx18
的矩阵。它选择了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文档的启发,选择kbest()

,您完全理解我想说的话。让我进一步交换吧。在单变量数据的情况下,我想找到4个特征中哪一个工作得很好。假设K=2,则返回两个特征。假设这两个特性是
mean
std
。但在多元的情况下,它返回我这两个特征的一部分。它确实返回了两个特性。如果考虑得更周全一些,它应该返回
2featurex9=18
,这样我就可以知道哪两个特性工作得很好