Sre*_*i R 4 python signal-processing numpy machine-learning scikit-learn
我正在尝试使用 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.
Run Code Online (Sandbox Code Playgroud)
我发现这两个 stackoverflow 帖子描述了类似的问题:
sklearn Logistic Regression “ValueError: Found array with dim 3. Estimator expected <= 2.”
而且,如果我错了,请纠正我,但似乎 scikit-learn 只能接受二维数据。
我的训练数据具有形状 (3240, 20, 5255) 其中包括:
我的测试数据具有形状 (3240,) #category 是 0 或 1
我可以使用哪些代码来操纵我的训练和测试数据,将其转换为 scikit-learn 可用的形式?另外,当我从3维降到2维时,如何确保数据不丢失?
确实,sklearn 仅适用于 2D 数据。
您可以尝试做的事情:
np.reshape训练数据将其转换为 shape (3240, 20*5255)。它将保留所有原始信息。但是 sklearn 将无法利用此数据中的隐式结构(例如,特征 1、21、41 等是同一变量的不同版本)。tensorflow+Keras堆栈)。CNN 专门设计用于处理此类多维数据并利用其结构。但是他们有很多超参数需要调整。(3240, 20*5255)。它会尽量保留尽可能多的信息,同时仍然保持较低的特征数量。如果您有更多数据(例如 10 万个示例),则第一种方法可能效果最佳。在您的情况下(3K 个示例和 10K 个特征),您需要对模型进行大量正则化以避免过度拟合。
| 归档时间: |
|
| 查看次数: |
13536 次 |
| 最近记录: |