
SVMで間違ったファイルを検出したいです。現在、犬の鳴き声と猫の鳴き声を分類するシステムを作っています。
# 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) clf = svm.SVC(kernel='linear', C=1).fit(train_data, train_label) score = clf.score(test_data, test_label) print(score)
と書きました。現在スコアは0.988です。しかし、今/sound_animal/soundsの中には犬の鳴き声のデータしかなく本来スコアは1.0になるはずです。間違っているファイルがどのファイルかみたいのですが、どのようにコードを書いたらどのファイルが間違っているのか確認できるでしょうか?それとも
score = clf.score(test_data, test_label)
といっぺんに計算しているからどのファイルが間違っているのか確認はできず、とても面倒ですが一つ一つファイルを減らすなどしてどのファイルが間違いなのか確認するしかないのでしょうか?

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。