sklearn 维度问题“发现数组具有暗淡 3。预计估计器 <= 2”

2024-02-12

我正在尝试使用 KNN 将 .wav 文件正确分类为两组:组 0 和组 1。

我提取了数据,创建了模型,拟合了模型,但是当我尝试使用 .predict() 方法时,出现以下错误:

Traceback (most recent call last):   
File "/..../....../KNN.py", line 20, in <module>
    classifier.fit(X_train, y_train)   
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/neighbors/base.py", line 761, in fit
    X, y = check_X_y(X, y, "csr", multi_output=True)   
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/utils/validation.py", line 521, in check_X_y
    ensure_min_features, warn_on_dtype, estimator)   
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/utils/validation.py", line 405, in check_array
    % (array.ndim, estimator_name)) 
ValueError: Found array with dim 3. Estimator expected <= 2.

我发现这两个 stackoverflow 帖子描述了类似的问题:

sklearn Logistic 回归“ValueError:找到的数组暗淡为 3。预计估计器 https://stackoverflow.com/questions/34972142/sklearn-logistic-regression-valueerror-found-array-with-dim-3-estimator-expec

错误:找到暗淡 3 的数组。估计器预期 https://stackoverflow.com/questions/34866548/error-found-array-with-dim-3-estimator-expected-2

并且,如果我错了,请纠正我,但 scikit-learn 似乎只能接受二维数据。

我的训练数据的形状为 (3240, 20, 5255) 其中包括:

  • 该数据集中有 3240 个 .wav 文件(这是训练数据的索引 0) 为了
  • For each.wav 文件中有一个 (20, 5255) numpy 数组,它表示 MFCC 系数(MFCC 系数尝试以数字方式表示声音)。

我的测试数据的形状为 (3240,) #category 为 0 或 1

我可以使用什么代码来操作我的训练和测试数据,将其转换为 scikit-learn 可以使用的形式?另外,如何保证从3维降到2维时数据不丢失?


确实,sklearn 仅适用于 2D 数据。

您可以尝试做什么:

  • 只需使用np.reshape在训练数据上将其转换为形状(3240, 20*5255)。它将保留所有原始信息。但 sklearn 将无法利用该数据中的隐式结构(例如,特征 1、21、41 等是同一变量的不同版本)。
  • 在原始数据上构建卷积神经网络(例如,使用tensorflow+Keras堆)。 CNN 是专门为处理此类多维数据并利用其结构而设计的。但它们有很多超参数需要调整。
  • 对数据进行降维(例如 PCA),将其重塑为(3240, 20*5255)。它会尝试保留尽可能多的信息,同时仍然保持较低的特征数量。
  • 使用手动特征工程从数据结构中提取特定信息(例如沿每个维度的描述性统计),并根据这些特征训练模型。

如果您有更多数据(例如 100K 个示例),第一种方法可能效果最好。在您的情况下(3K 示例和 10K 特征),您需要大量正则化模型以避免过度拟合。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sklearn 维度问题“发现数组具有暗淡 3。预计估计器 <= 2” 的相关文章

随机推荐