
ValueError: The number of classes has to be greater than one; got 1 とエラーが出ました。
# 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 nceps = 12 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)) pattern = r"dog" file = os.path.basename(file_name) match = re.match(pattern, file) if match: train_label = np.append(train_label, 0) else: train_label = np.append(train_label, 1) if len(test_data) == 0: test_data = feature else: test_data = np.vstack((test_data, feature)) if match: test_label = np.append(test_label,0) else: test_label = np.append(test_label,1) 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)
とコードを書きました。このコードを実行すると、ValueError: The number of classes has to be greater than one; got 1 とエラーが出ました。Traceback では、
Traceback (most recent call last): File "sound.py", line 70, in <module> clf = svm.SVC(kernel='linear', C=1).fit(train_data, train_label) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/svm/base.py", line 152, in fit y = self._validate_targets(y) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/svm/base.py", line 526, in _validate_targets % len(cls)) ValueError: The number of classes has to be greater than one; got 1
の部分がおかしいと出ました。print(len(train_data))とprint(len(train_label))の結果を出力すると、両方とも202と出ました。なのでエラー文にある通り1より大きいと思うのですが。。。どのように直せば良いのでしょうか?
回答2件
あなたの回答
tips
プレビュー