Сообщество IT-специалистов
Ответы на любые вопросы об IT
Профессиональное развитие в IT
from random import uniform data = [ [1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 0, 1], [0, 1, 0], [1, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 0, 1], [0, 1, 0], [1, 0, 0] ] response = [0, 1, 2, 2, 1, 0, 0, 1, 2, 2, 1, 0] hardlim = lambda s: 1 if s >= 0 else 0 def net(x: list, w: list, bias: float) -> float: return sum(w[i] * x[i] for i in range(len(x))) + bias def train_perceptron(data: list, target: list, epochs: int = 10, lr: float = 0.1): w = [uniform(-1, 1) for _ in range(3)] bias = 0.0 for _ in range(epochs): for i in range(len(data)): res = hardlim(net(data[i], w, bias)) err = target[i] - res w = [w[j] + (lr * err * data[i][j]) for j in range(len(w))] bias += lr * err return w, bias perceptrons = [] for class_label in [0, 1, 2]: binary_target = [1 if y == class_label else 0 for y in response] w, bias = train_perceptron(data, binary_target, epochs=10, lr=0.1) perceptrons.append((w, bias)) print("Trained perceptrons:") for i, (w, bias) in enumerate(perceptrons): print(f"Class {i}: Weights = {w}, Bias = {bias}")