12345678910111213141516171819202122232425262728293031323334353637 |
- 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
- val_idx = 0
- def load():
- raw_data = np.loadtxt('car.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()
- 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))
|