Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- """
- Created on Fri Oct 18 22:33:37 2019
- @author: Nur Imtiazul Haque
- """
- import numpy as np
- import pandas as pd
- from sklearn.preprocessing import StandardScaler
- import sys
- import warnings
- import math
- def modify_value(data):
- data=str(data)
- modified_string=""
- for i in range(len(data)):
- if (data[i]>='0' and data[i]<='9') or data[i]=='.':
- modified_string+=data[i]
- if modified_string=="":
- modified_string="0"
- return modified_string
- if not sys.warnoptions:
- warnings.simplefilter("ignore")
- def mean_squared_error(theta, X, y):
- estimator = [np.exp(np.dot(theta,x)) for x in X]
- #print(X)
- return .5*sum([math.pow(estimator[i] - y[i],2) for i in range(len(estimator))])
- def poisson_regression(X_old,y_old,alpha=0.01,max_iter=4000):
- theta = np.random.rand(4)
- print("Initial Theta: ")
- print(theta)
- iter_mse=[]
- #print(len(X_old))
- #print(len(y_old))
- X = []
- y =[]
- for i in range(len(X_old)):
- #if np.isnan(sum(X_old[i]))==False:
- X.append(X_old[i])
- y.append(y_old[i])
- #print(len(X))
- #print(len(y))
- for k in range(max_iter):
- for j in range(len(theta)):
- update = alpha*sum([(y[i] - np.exp(np.dot(theta,X[i])))*X[i][j] for i in range(len(X))])
- theta[j] = theta[j] + update #updating theta
- error = mean_squared_error(theta,X,y)
- #print(error)
- iter_mse.append((k, error))
- return error
- path = 'nyc-east-river-bicycle-counts.csv'
- dataset= pd.read_csv(path)
- input_data = dataset.iloc[:, :-1].values
- output_data = dataset.iloc[:, 10].values
- for row in range(len(input_data)):
- for col in range(3, len(input_data[0])):
- input_data[row][col]=modify_value(input_data[row][col])
- prediction_target = [6,7,8,9,10]
- for iter in prediction_target:
- X = np.array( [ np.append([1],[i for i in value]) for value in input_data[:,3:6] ]).astype(np.float)
- y = np.array(input_data[:,iter]).astype(np.float)
- ms_error = poisson_regression(X,y)
- print(str(iter) + '--> Mean Square Error: ' + str(ms_error))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement