def test_stochastic_fit(self):
        """
        Test method using a simple data sets (Iris)
        """
        # Load the Iris data set
        iris = load_iris()
        X = iris.data[:, :2]
        y = (iris.target != 0) * 1

        # Use 50% of the data for training, 50% for testing.
        X_train, X_test, Y_train, Y_test = train_test_split(X, y.reshape(np.shape(X)[0], 1), train_size=0.50)
        logreg = LogisticRegression(X_train, Y_train, X_test, Y_test)
        logreg.fit_stochastic(n_epochs=50, t0=5, t1=50)

        # Assert accuracy is more than 0.85
        self.assertTrue(logreg.accuracy()>0.85)
Beispiel #2
0
plt.plot(training_accuracy, 'b', label="Training accuracy")
plt.plot(validation_accuracy, 'r', label="Test accuracy")
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.show()

plt.plot(training_cross_entropy, 'b', label="Training cross entropy")
plt.plot(validation_cross_entropy, 'r', label="Test cross entropy")
plt.xlabel('Epoch')
plt.ylabel('Cross entropy')
plt.show()

X_test = X[n_training + n_validation:]
y_test = y[n_training + n_validation:]
print(log_reg.regularized_cross_entropy(X_test, y_test),
      log_reg.accuracy(X_test, y_test))
confusion_map = log_reg.confusion_map(X_test, y_test)
plt.imshow(confusion_map, cmap='Reds', interpolation='nearest')
plt.show()

training_accuracies = []
training_cross_entropies = []
test_accuracies = []
test_cross_entropies = []
kf = KFold(n_splits=4)
for train_index, test_index in kf.split(X):
    log_reg = LogisticRegression(regularization_factor=.001)
    training_accuracy, training_cross_entropy = log_reg.train(X[train_index],
                                                              y[train_index],
                                                              epochs=1200)
    training_accuracies.append(log_reg.accuracy(X[train_index],
Beispiel #3
0
ilambda = 0
num_iters = 1000

# 创建模型
my_linear = LogisticRegression(X_m, y)

print('\n梯度下降学习中(lambda = {})...'.format(ilambda))
my_linear.gradient_descent(alpha, ilambda, num_iters)

theta = ''
for val in my_linear.theta:
	theta += str(val)[str(val).find('[')+1:-1]
	theta += '\n'
print('θ: \n{}'.format(theta))
print('梯度下降学习结束...')

print('\n模型精度为: {:.2f}%'.format(my_linear.accuracy()*100))

print('\n梯度下降预测: ')
# 预测数据
p = lrf.map_feature(data[0:5, 0:1], data[0:5, 1:2])

value = my_linear.prediction(p)	

for i in range(len(p)):
	print('{} -> 特征1: {:.2f}  特征2: {:.2f}  -->  标记为1的概率: {:.2f} %'.format(
			i+1, p[i][1], p[i][2], float(value[i])*100))	

# 绘制决策边界
my_linear.plot_decision_boundary(data)