import numpy as np
np.random.seed(1)
speed_train = 0.5
arr = []
for d in open("data.txt",'r'):
arr.append(d[:-1].split('\t'))
#выбираем данные (1 и 2 столбцы)
train_data = np.array(np.array(arr)[:,:2],dtype=float)
#Добавляем нейрон смещения
train_bias = np.array([[1] * len(arr)],dtype=float).T
#Наши итоговые обучающие данные
train = np.hstack((train_data,train_bias))
#результат, который хотим получить
res = np.array([np.array(arr)[:,2]],dtype=int).T
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def diffsigmoid(z):
return (1 - z) * z
def normal(z,nbias):
return np.round(z-nbias)
weights = np.random.random((3,1))
print("начальные веса: ")
print(weights)
output = sigmoid(np.dot(train, weights))
print("результат: ")
print(output)
err = res - output
print("ошибка: ")
print(err)
adweights = np.dot(train.T, err * diffsigmoid(output))
print("Как нужно изменить веса: ")
print(adweights)
weights += adweights
print("Измененные веса: ")
print(weights)
for i in range(10000):
output = sigmoid(np.dot(train, weights))
err = res - output
adweights = np.dot(train.T, speed_train * err * diffsigmoid(output))
weights += adweights
print(err.sum())
print("weights: ", weights)
print(normal(sigmoid(np.dot(train,weights)),0))