def p_vector(p): """ VECTOR : VECTOR ',' TERM | TERM """ if len(p) == 4: p[0] = p[1] + [p[3]] else: p[0] = Vector(values=[p[1]])
from random import randint, seed from perceptron import PerceptronTrain, PerceptronTest from structures import Vector, Scalar, Dataset from utils import train_test_split, eval_predictions seed(42) v = Vector(randint(-100, 100), randint(-100, 100)) xs = [Vector(randint(-100, 100), randint(-100, 100)) for i in range(500)] ys = [v * x * Scalar(randint(-1, 9)) for x in xs] # generate vector-label pairs data = [(vector, label) for vector, label in zip(xs, ys)] # split data train, test = train_test_split(data) # retrieve labels only from a test set y_true = [entry[1].sign() for entry in test] # train weights, bias = PerceptronTrain(train) # apply perceptron to classify test set preds = PerceptronTest(weights, bias, test) # evaluate the performance score = eval_predictions(preds, y_true) print(score)
from structures import Scalar, Vector x = Scalar(4.0) y = Scalar(2.0) a = Vector(1.0, 2.0, 3.0) b = Vector(3.0, 4.0, 5.0) # __add__ print(x+y) # __sub__ print(x - y) # __mul__ Scalar print(x * y) # __mul__ Vec print(y * a) # __truediv__ print(x / y) # __rtruediv__ print(y.__rtruediv__(b)) # sign print(x.sign()) print(Scalar(-7).sign()) print(Scalar(0).sign()) # Vector + Vector print(a + b) # magnitute