Commit 85b39497 authored by Sushant Mahajan's avatar Sushant Mahajan

added prediction code, need to perform minimization

parent e13e9135
Pipeline #278 skipped
......@@ -5,12 +5,21 @@ import csv
from random import random
from pprint import pprint as pp
from math import log, exp
from functools import reduce
import numpy as np
params = {"layers":[57, int(57/2), 1], "test":"TestX.csv", "train":"Train.csv"}
def getData(srcF, isTrain=True, addBias=True):
def doNormalize(X):
#do 0 mean 1 std normalization
x1 = np.array(X,dtype=float)
for i in range(len(X[0])):
col = x1[:,i]
mean,std = col.mean(),col.std()
std = std if std!=0.0 else 1.0
x1[:,i] = (x1[:,i]-mean)/std
return x1.tolist()
def getData(srcF, isTrain=True, addBias=True, normalize=True):
X,y=[],[]
with open(srcF) as src:
reader = csv.reader(src, delimiter=',')
......@@ -27,6 +36,9 @@ def getData(srcF, isTrain=True, addBias=True):
if isTrain:
y.append(int(row[-1]))
if normalize:
X = doNormalize(X)
#print(X[0])
return (X,y)
def sigmoid(v):
......@@ -88,9 +100,18 @@ def cost(li, lh, lo, weights, X, y, lamb):
return J,grad
def predict(x, w1, w2):
x=[1]+x #58x1
x = np.array(x)
h1 = sigmoid(np.dot(w1,x).tolist()) #28x58 * 58x1 = 28x1
h1 = [1]+h1
h2 = sigmoid(np.dot(w2,h1).tolist()) #1x29 * 29x1 = 1x1
return 1 if h2>0.5 else 0
if __name__ == "__main__":
X,y = getData(params["train"])
# tX,ty = getData(params["test"], isTrain=False)
tX,ty = getData(params["test"], isTrain=False)
# print(len(X), len(X[0]), len(y), X[0])
# print(len(tX), len(ty), tX[0])
li,lh,lo = tuple(params["layers"])
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment