import numpy as np from sklearn import svm def get_one_hot(targets, nb_classes): res = np.eye(nb_classes)[np.array(targets).reshape(-1)] return res.reshape(list(targets.shape)+[nb_classes]) data_slice = 5 def load(): raw_data = np.loadtxt('wine.data', delimiter=',') data_size = len(raw_data) np.random.shuffle(raw_data) data = np.array_split(raw_data, data_slice) ret = [np.split(i, [1,], axis=1) for i in data] return ret data_pieces = load() val_idx = 0 train_label = np.concatenate( [data_pieces[i][0] for i in list(range(data_slice))[:val_idx] + list(range(data_slice))[val_idx+1:]] ) train_label = train_label - 1 train_label = train_label.flatten().astype(int) train_data = np.concatenate( [data_pieces[i][1] for i in list(range(data_slice))[:val_idx] + list(range(data_slice))[val_idx+1:]] ) val_label = data_pieces[val_idx][0] val_data = data_pieces[val_idx][1] val_label = val_label - 1 val_label = val_label.flatten().astype(int) clf = svm.SVC(gamma='scale') clf.fit(train_data, train_label) print('val_acc', sum(clf.predict(val_data) == val_label) / len(val_label))