def run_multiclass(): from data_loader import toy_data_multiclass_3_classes_non_separable, \ toy_data_multiclass_5_classes, \ data_loader_mnist datasets = [(toy_data_multiclass_3_classes_non_separable(), 'Synthetic data', 3), (toy_data_multiclass_5_classes(), 'Synthetic data', 5), (data_loader_mnist(), 'MNIST', 10)] for data, name, num_classes in datasets: print('%s: %d class classification' % (name, num_classes)) X_train, X_test, y_train, y_test = data print('One-versus-rest:') w, b = OVR_train(X_train, y_train, C=num_classes) train_preds = OVR_predict(X_train, w=w, b=b) preds = OVR_predict(X_test, w=w, b=b) print('train acc: %f, test acc: %f' % (accuracy_score( y_train, train_preds), accuracy_score(y_test, preds))) print('Multinomial:') w, b = multinomial_train(X_train, y_train, C=num_classes) train_preds = multinomial_predict(X_train, w=w, b=b) preds = multinomial_predict(X_test, w=w, b=b) print('train acc: %f, test acc: %f' % (accuracy_score( y_train, train_preds), accuracy_score(y_test, preds)))
return preds def sigmoid(x): return 1 / (1 + np.exp(-x)) def accuracy_score(true, preds): return np.sum(true == preds).astype(float) / len(true) from data_loader import toy_data_multiclass_3_classes_non_separable, \ toy_data_multiclass_5_classes, \ data_loader_mnist datasets = [(toy_data_multiclass_3_classes_non_separable(), 'Synthetic data', 3), (toy_data_multiclass_5_classes(), 'Synthetic data', 5), (data_loader_mnist(), 'MNIST', 10)] for data, name, num_classes in datasets: print('%s: %d class classification' % (name, num_classes)) X_train, X_test, y_train, y_test = data print('One-versus-rest:') w, b = OVR_train(X_train, y_train, C=num_classes) train_preds = OVR_predict(X_train, w=w, b=b) preds = OVR_predict(X_test, w=w, b=b) print( 'train acc: %f, test acc: %f' % (accuracy_score(y_train, train_preds), accuracy_score(y_test, preds)))