Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d1e9348

Browse files
adds multivariate linear reg
1 parent a0d7856 commit d1e9348

File tree

1 file changed

+39
-3
lines changed

1 file changed

+39
-3
lines changed

learning.py

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -603,9 +603,45 @@ def predict(example):
603603
# ______________________________________________________________________________
604604

605605

606-
def Linearlearner(dataset):
607-
"""Fit a linear model to the data."""
608-
unimplemented()
606+
def Linearlearner(dataset, learning_rate=0.01, epochs=100):
607+
"""
608+
>>> learner = Linearlearner(data)
609+
>>> learner(x)
610+
y
611+
"""
612+
idx_i = dataset.inputs
613+
idx_t = dataset.target # As of now, dataset.target gives only one index.
614+
examples = dataset.examples
615+
616+
# X transpose
617+
X_col = [dataset.values[i] for i in idx_i] # vertical columns of X
618+
619+
# Add dummy
620+
ones = [1 for i in range(len(examples))]
621+
X_col = ones + X_col
622+
623+
# Initialize random weigts
624+
w = [random(-0.5, 0.5) for i in range(len(idx_i) + 1)]
625+
626+
for epoch in range(epochs):
627+
err = []
628+
# Pass over all examples
629+
for example in examples:
630+
x = [example[i] for i in range(idx_i)]
631+
x = [1] + x
632+
y = dotproduct(w, x)
633+
t = example[idx_t]
634+
err.append(t - y)
635+
636+
# update weights
637+
for i in range(len(w)):
638+
w[i] = w[i] - dotproduct(err, X_col[i])
639+
640+
def predict(example):
641+
x = [1] + example
642+
return dotproduct(w, x)
643+
return predict
644+
609645
# ______________________________________________________________________________
610646

611647

0 commit comments

Comments
 (0)