In [2]:
# 
# LogisticRegression Example
#
# @author becxer
# @email becxer87@gmail.com
#

import numpy as np
from pytrain.LogisticRegression import LogisticRegression
from pytrain.lib import dataset
from pytrain.lib import autotest

In [3]:
# Load IRIS data
iris_mat_train, iris_label_train = dataset.load_iris("sample_data", "training", one_hot=True)
iris_mat_test, iris_label_test = dataset.load_iris("sample_data", "testing", one_hot=True)


Dataset sample_data/iris is already exist
Dataset sample_data/iris is already exist

In [3]:
# Confirm dataset size
print ("train mat size " + str(np.array(iris_mat_train).shape))
print ("train label size " + str(np.array(iris_label_train).shape))


train mat size (120, 4)
train label size (120, 3)

In [4]:
# Train model
logit_reg = LogisticRegression(iris_mat_train, iris_label_train)
logit_reg.fit(lr = 0.0001, epoch = 10000, batch_size = 20)

In [5]:
# Auto-test model
logging = True
error_rate = autotest.eval_predict(logit_reg,\
                                iris_mat_test, iris_label_test,\
                                logging, one_hot=True)

print("iris predict (with logistic regression) error rate :" + str(error_rate))


input : '['4.9', '3.0', '1.4']' --> predicted : '[1, 0, 0]' --? origin : '[1, 0, 0]'
input : '['7.7', '3.8', '6.7']' --> predicted : '[0, 0, 1]' --? origin : '[0, 0, 1]'
input : '['5.6', '3.0', '4.5']' --> predicted : '[0, 0, 1]' --? origin : '[0, 1, 0]'
input : '['5.0', '3.4', '1.6']' --> predicted : '[1, 0, 0]' --? origin : '[1, 0, 0]'
input : '['6.3', '2.8', '5.1']' --> predicted : '[0, 0, 1]' --? origin : '[0, 0, 1]'
input : '['6.7', '3.1', '4.4']' --> predicted : '[1, 0, 0]' --? origin : '[0, 1, 0]'
input : '['5.4', '3.9', '1.7']' --> predicted : '[1, 0, 0]' --? origin : '[1, 0, 0]'
input : '['6.1', '2.6', '5.6']' --> predicted : '[0, 0, 1]' --? origin : '[0, 0, 1]'
input : '['5.5', '2.6', '4.4']' --> predicted : '[0, 0, 1]' --? origin : '[0, 1, 0]'
input : '['5.0', '3.5', '1.3']' --> predicted : '[1, 0, 0]' --? origin : '[1, 0, 0]'
input : '['6.7', '3.1', '5.6']' --> predicted : '[0, 0, 1]' --? origin : '[0, 0, 1]'
input : '['5.4', '3.0', '4.5']' --> predicted : '[0, 0, 1]' --? origin : '[0, 1, 0]'
input : '['4.8', '3.0', '1.4']' --> predicted : '[1, 0, 0]' --? origin : '[1, 0, 0]'
input : '['5.9', '3.0', '5.1']' --> predicted : '[0, 0, 1]' --? origin : '[0, 0, 1]'
input : '['5.2', '2.7', '3.9']' --> predicted : '[1, 0, 0]' --? origin : '[0, 1, 0]'
input : '['5.5', '4.2', '1.4']' --> predicted : '[1, 0, 0]' --? origin : '[1, 0, 0]'
input : '['6.9', '3.1', '5.1']' --> predicted : '[0, 0, 1]' --? origin : '[0, 0, 1]'
input : '['6.0', '3.4', '4.5']' --> predicted : '[1, 0, 0]' --? origin : '[0, 1, 0]'
input : '['5.1', '3.8', '1.5']' --> predicted : '[1, 0, 0]' --? origin : '[1, 0, 0]'
input : '['6.4', '2.8', '5.6']' --> predicted : '[0, 0, 1]' --? origin : '[0, 0, 1]'
input : '['6.7', '3.0', '5.0']' --> predicted : '[0, 0, 1]' --? origin : '[0, 1, 0]'
input : '['5.4', '3.9', '1.3']' --> predicted : '[1, 0, 0]' --? origin : '[1, 0, 0]'
input : '['7.7', '2.8', '6.7']' --> predicted : '[0, 0, 1]' --? origin : '[0, 0, 1]'
input : '['6.1', '2.8', '4.7']' --> predicted : '[0, 0, 1]' --? origin : '[0, 1, 0]'
input : '['4.4', '2.9', '1.4']' --> predicted : '[1, 0, 0]' --? origin : '[1, 0, 0]'
input : '['6.5', '3.2', '5.1']' --> predicted : '[0, 0, 1]' --? origin : '[0, 0, 1]'
input : '['5.5', '2.5', '4.0']' --> predicted : '[1, 0, 0]' --? origin : '[0, 1, 0]'
input : '['5.2', '3.5', '1.5']' --> predicted : '[1, 0, 0]' --? origin : '[1, 0, 0]'
input : '['7.2', '3.6', '6.1']' --> predicted : '[0, 0, 1]' --? origin : '[0, 0, 1]'
input : '['6.3', '3.3', '4.7']' --> predicted : '[1, 0, 0]' --? origin : '[0, 1, 0]'
<LogisticRegression> error rate is 0.333333333333
iris predict (with logistic regression) error rate :0.333333333333