from utils import load_data, optimizer, Accuracy np.random.seed(2020) # Data generation train_data, test_data = load_data('RedWine') x_train, y_train = train_data[0], train_data[1] x_test, y_test = test_data[0], test_data[1] # Hyper-parameter _epoch=1000 _batch_size=32 _lr = 0.001 _optim = 'SGD' # Build model model = LogisticRegression(num_features=x_train.shape[1]) optimizer = optimizer(_optim) # Solve print('Train start!') model.fit(x=x_train, y=y_train, epochs=_epoch, batch_size=_batch_size, lr=_lr, optim=optimizer) print('Trained done.') # Inference print('Predict on test data') inference = model.eval(x_test) # Assess model error = Accuracy(inference, y_test) print('Accuracy on Test Data : %.4f' % error)
# # Assess model # error = Accuracy(inference, y_test) # print('Accuracy on test data : %.4f' % error) _lr = [0.02, 0.01, 0.005, 0.002, 0.001] _epoch = [1000, 2000, 3000, 4000, 5000, 10000, 20000, 30000, 40000] for lr in _lr: for n_iter in _epoch: model = LogisticRegression(num_features=x_train.shape[1]) _optimizer = optimizer(_optim) # Solve print('Train start.') model.fit(x=x_new_data, y=y_train, epochs=n_iter, batch_size=_batch_size, lr=lr, optim=_optimizer) print('Trained done.') # Inference print('Predict on test data') inference = model.eval(feature_func_(x_test)) # Assess model error = Accuracy(inference, y_test) print(lr, n_iter) print('Accuracy on test data : %.4f' % error) del model del _optimizer
[1.23394576e-04 5.24979187e-01]]] ''' #====================================================================================================== print('=' * 20, 'Logistic Regression Test', '=' * 20) model = LogisticRegression(num_features=x_data.shape[1]) optimizer = optimizer(_optim) print('Initial weight: \n', model.W.reshape(-1)) print() model.fit(x=x_data, y=y_data, epochs=_epoch, batch_size=_batch_size, lr=_lr, optim=optimizer) print('Trained weight: \n', model.W.reshape(-1)) print() # model evaluation inference = model.eval(x_data) # Error calculation error = Accuracy(inference, y_data) print('Accuracy on Check Data : %.4f \n' % error) ''' You should get results as: Initial weight:
## ---------------------------------------------------------------------------------------------------- # Logistic回归 算法测试用例 import numpy as np import math from models.LogisticRegression import LogisticRegression iris = datasets.load_iris() X = iris['data'] y = iris['target'] X = X[y!=2] y = y[y!=2] # 将学习率固定在 0.01 Logstic = LogisticRegression(X, y, threshold = 0.5) Logstic.fit(alpha = 0.01, accuracy = 0.001) print("epoch:", Logstic.epoch) print("theta:", Logstic.thetas) y_predict = Logstic.predict() y_predict # 使用自动控制的下降学习率 Logstic2 = LogisticRegression(X, y, threshold = 0.5) Logstic2.auto_fit(accuracy = 0.001) print("epoch:",Logstic2.epoch) print("theta:",Logstic2.thetas) y_predict = Logstic2.predict() y_predict ## ---------------------------------------------------------------------------------------------------- # 神经网络 算法测试用例