我有一个带有9
变量的时间序列数据。我发现其中有4个功能。例如,我计算np.mean(), np.std(), np.var(), np.ptp()
,现在我的列从36
变量扩展到9
变量。
sklearn
中可用的特征选择方法适用于单变量数据。因此,当我将这些方法应用于多元数据时,他们不会发现np.mean()
是否比np.std()
更好。他们只会从36个变量中找到最佳变量。
所以我想知道,什么是处理多元数据的正确方法。
让我总结一下,以确保我首先了解您的问题。您有9个变量的时间序列数据,这意味着您有9个长度为L
的通道,所以形状为L x 9
的矩阵正确吗?现在,您在每个通道上计算4个特征,使其成为形状为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文档启发SelectKBest
(https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectKBest.html#sklearn.feature_selection.SelectKBest)