我有一个带有9变量的时间序列数据。我从中发现了4个特点。例如,我计算np.mean(), np.std(), np.var(), np.ptp()现在我的列从9变量扩展到36变量。sklearn中可用的特征选择方法适用于单变量数据。因此,当我将这些方法应用于多变量数据时,他们不会发现np.mean()是否比np.std()更好。他们只会从36个变量中找到最好的变量。所以我想知道,处理多元数据的正确方法应该是什么。
9
np.mean(), np.std(), np.var(), np.ptp()
36
sklearn
np.mean()
np.std()
p1tboqfb1#
让我先总结一下,以确保我理解了你的问题。你有9个变量的时间序列数据,这意味着你有9个长度为L的通道,所以一个形状为L x 9的矩阵,对吗?现在,您计算每个通道上的4个特征,使其成为形状为L x 36的矩阵。例如,sklearn.selectKBest所做的是从36个特征向量中选择k个最佳特征。例如,如果k = 18,你将得到一个形状为L x 18的矩阵。它选择了18个最佳特征。你能详细说明一下你的问题和你想达到的目标吗?可能有一些代码。
L
L x 9
L x 36
sklearn.selectKBest
k = 18
L x 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屏蔽的索引。灵感来自SelectKBest的sklearn-documentation(https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectKBest.html#sklearn.feature_selection.SelectKBest)
true
SelectKBest
1条答案
按热度按时间p1tboqfb1#
让我先总结一下,以确保我理解了你的问题。你有9个变量的时间序列数据,这意味着你有9个长度为
L
的通道,所以一个形状为L x 9
的矩阵,对吗?现在,您计算每个通道上的4个特征,使其成为形状为L x 36
的矩阵。例如,
sklearn.selectKBest
所做的是从36个特征向量中选择k个最佳特征。例如,如果k = 18
,你将得到一个形状为L x 18
的矩阵。它选择了18个最佳特征。你能详细说明一下你的问题和你想达到的目标吗?可能有一些代码。
编辑:
查看选择了哪些功能的可能解决方案:
现在你只需要记住哪些特征对应于用
true
屏蔽的索引。灵感来自
SelectKBest
的sklearn-documentation(https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectKBest.html#sklearn.feature_selection.SelectKBest)