我试图使用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.我发现这两个堆叠溢出的帖子描述了类似的问题:
sklearn Logistic Regression "ValueError: Found array with dim 3. Estimator expected <= 2."
Error: Found array with dim 3. Estimator expected <= 2
如果我错了,请纠正我,但似乎科学学习只能接受二维数据。
我的培训数据有形状(3240,20,5255),包括:
我的测试数据的形状为(3240,)#类别为0或1
我可以使用什么代码来操作我的培训和测试数据,将其转换成一个可供scikit使用的表单--学习?另外,当我从三维降到二维时,如何确保数据不会丢失?
发布于 2017-12-28 11:32:58
的确,sklearn只适用于2D数据。
你能做的是:
np.reshape将其转换为形状(3240, 20*5255)。它将保存所有原始信息。但是sklearn将无法利用该数据中的隐式结构(例如,特征1、21、41等是同一变量的不同版本)。tensorflow+Keras堆栈)上构建一个卷积神经网络。CNN是专为处理此类多维数据并利用其结构而设计的。但他们有很多超参数要调。(3240, 20*5255)的数据使用降维方法(例如PCA)。它尽力保存尽可能多的信息,同时仍然保持较低的功能数量。如果您有更多的数据(例如,100 K示例),第一种方法可能效果最好。在你的情况下(3K的例子和10K的特性),你需要调整你的模型,以避免过度。
https://stackoverflow.com/questions/48003185
复制相似问题