ValueError: bad input shape (11, 12)とエラーが出ました。
現在、犬の鳴き声と猫の鳴き声を分類するシステムを作っています。
index.pyには
# coding:utf-8 from sklearn import svm, cross_validation from sklearn.metrics import classification_report, accuracy_score import sys from mfcc import * import glob import csv import random import numpy as np import os from sklearn.model_selection import train_test_split if __name__ == "__main__": train_label = np.array([]) test_label = np.array([]) nfft = 2048 # FFTのサンプル数 nceps = 12 # MFCCの次元数 train_data = np.empty((0, 12), float) test_data = np.empty((0, 12), float) basedir = '/sound_animal/sounds' files = glob.glob(os.path.join(basedir, '*.wav')) for file_name in files: feature = get_feature(file_name, nfft, nceps) if len(train_data) == 0: train_data = feature else: train_data = np.vstack((train_data, feature)) train_label = np.append(train_label,file_name) feature = get_feature(file_name, nfft, nceps) if len(test_data) == 0: test_data = feature else: test_data = np.vstack((test_data, feature)) test_label = np.append(test_label,file_name) feature_train_data = np.hstack((train_label.reshape(len(train_label), 1), train_data)) feature_test_data = np.hstack((test_label.reshape(len(test_label), 1), test_data)) with open("feature_data/train_data.txt", "w") as f: writer = csv.writer(f) writer.writerows(feature_train_data) with open("feature_data/test_data.txt", "w") as f: writer = csv.writer(f) writer.writerows(feature_train_data) X_train, X_test, y_train, y_test = train_test_split(train_data, test_data, test_size=0.30, random_state=1) clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train) score = clf.score(X_test, y_test) print(score)
と書きました。
Tracebackには
Traceback (most recent call last): File "sound.py", line 57, in <module> clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/svm/base.py", line 151, in fit X, y = check_X_y(X, y, dtype=np.float64, order='C', accept_sparse='csr') File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/utils/validation.py", line 526, in check_X_y y = column_or_1d(y, warn=True) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/utils/validation.py", line 562, in column_or_1d raise ValueError("bad input shape {0}".format(shape)) ValueError: bad input shape (11, 12)
と出ました。
print(len(X_train)) print(len(X_test)) print(len(y_train)) print(len(y_test))
と長さを見たら
11 5 11 5
と出て12が何の次元数なのかわかりません。
しかし、
clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train)
のfitの2つの引数が同じ次元数でなければいけないという決まりはないと思うのですが。。。
どのようにこのエラーを直せば良いのでしょうか?
http://webdatareport.hatenablog.com/entry/2016/11/06/161304 のサイトを参考にしてコードを書きました。
回答1件
あなたの回答
tips
プレビュー