【发布时间】:2018-06-08 17:57:31
【问题描述】:
我正在尝试使用 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 Regression "ValueError: Found array with dim 3. Estimator expected <= 2."
Error: Found array with dim 3. Estimator expected <= 2
如果我错了,请纠正我,但 scikit-learn 似乎只能接受二维数据。
我的训练数据有形状 (3240, 20, 5255) 其中包括:
- 此数据集中的 3240 个 .wav 文件(这是训练数据的索引 0) 对于
- 对于 每个 .wav 文件,有一个 (20, 5255) numpy 数组表示 MFCC 系数(MFCC 系数尝试以数字方式表示声音)。
我的测试数据的形状为 (3240,) #category 为 0 或 1
我可以使用什么代码来处理我的训练和测试数据,以将其转换为可供 scikit-learn 使用的形式?还有,从3维降到2维怎么保证数据不丢失?
【问题讨论】:
-
您需要将MFCC数组转换为一维,然后形状将是
(3240, 20*5255) -
或者也许解释更多关于形状 (20, 5255) 的内置二维数组。行和列代表什么。你能从每一列或每一行中取一个代表数字吗?
标签: python numpy machine-learning scikit-learn signal-processing