Example #1
0
def main():

    dataSet = [[[0, 0], [0]], [[0, 1], [1]], [[1, 0], [1]], [[1, 1], [0]]]

    learningRate = 0.5
    numberOfTrainingSamples = 100000
    trainingData = [
        dataSet[np.random.randint(0, 4, size=None, dtype=int)]
        for i in range(numberOfTrainingSamples)
    ]

    network = nn.NeuralNetwork(2, 2, 1)
    network.train(learningRate, trainingData)

    for test in dataSet:
        prediction = network.predict(test[0])
        print(
            f"Input: {test[0]} | Target: {test[1]} | Predicted: {prediction}")
Example #2
0
def main():

    #retrieve data from CSV file
    with open('iris_dataset.csv') as dataFile:
        data = np.array(list(csv.reader(dataFile)))

    #create lists for training and testing
    trainingSet = []
    testingSet = []
    count = 0
    for iris in data:

        dataVector = [float(i) for i in iris[:4]]
        if iris[4] == 'Iris-setosa':
            classificationVector = [1, 0, 0]
        elif iris[4] == 'Iris-versicolor':
            classificationVector = [0, 1, 0]
        else:
            classificationVector = [0, 0, 1]
        sortData = [dataVector, classificationVector]
        if count % 2 == 0:
            trainingSet.append(sortData)
        else:
            testingSet.append(sortData)
        count = count + 1

    learningRate = 1.2
    testNetwork = nn.NeuralNetwork(4, 6, 3)

    trainingSetPlus = trainingSet[:]
    for i in range(100):
        random.shuffle(trainingSetPlus)
        trainingSetPlus = trainingSetPlus + trainingSet[:]
        random.shuffle(trainingSetPlus)

    for i in range(1000):
        random.shuffle(trainingSet)

    network = nn.NeuralNetwork(4, 6, 3)
    network.train(learningRate, trainingSet)

    #build confusion matrix
    '''
	+------------+---------+------------+-----------+
	|            | Setosa  | Versicolor | Virginica |
	+------------+---------+------------+-----------+
	| Setosa     |  TP(S)  |   E(S,Ve)  |  E(S,Vi)  |
	| Versicolor | E(Ve,S) |   TP(Ve)   |  E(Ve,Vi) |
	| Virginica  | E(Vi,S) |   E(Vi,Ve) |   TP(Vi)  |
	+------------|---------+------------+-----------|
	'''
    confusionMatrix = np.zeros(
        shape=(3, 3))  #creates a 2D array (3x3 table) containing all zeros

    for test in testingSet:

        prediction = network.predict(test[0])
        print(prediction)
        #find classification
        highestIndex = 0
        for index in range(1, len(prediction)):
            if prediction[index] > prediction[highestIndex]:
                highestIndex = index

        if highestIndex == 0:
            prediction = 'Iris-setosa'
        elif highestIndex == 1:
            prediction = 'Iris-versicolor'
        else:
            prediction = 'Iris-virginica'

        #make a prediction for the current test case
        classification = test[1].index(1)
        row = UpdateTable(classification)
        col = UpdateTable(prediction)
        confusionMatrix[row, col] = confusionMatrix[
            row, col] + 1  #increment corresponding cell in the matrix

    print(confusionMatrix)