Advertisement
Guest User

Untitled

a guest
Oct 18th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.17 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Fri Oct 18 22:33:37 2019
  4.  
  5. @author: Nur Imtiazul Haque
  6. """
  7. import numpy as np
  8. import pandas as pd
  9. from sklearn.preprocessing import StandardScaler
  10. import sys
  11. import warnings
  12. import math
  13.  
  14. def modify_value(data):
  15.     data=str(data)
  16.     modified_string=""
  17.     for i in range(len(data)):
  18.         if (data[i]>='0' and data[i]<='9') or data[i]=='.':
  19.             modified_string+=data[i]
  20.  
  21.     if modified_string=="":
  22.         modified_string="0"
  23.     return modified_string
  24.  
  25. if not sys.warnoptions:
  26.     warnings.simplefilter("ignore")
  27.  
  28. def mean_squared_error(theta, X, y):
  29.     estimator = [np.exp(np.dot(theta,x)) for x in X]
  30.     #print(X)
  31.     return .5*sum([math.pow(estimator[i] - y[i],2) for i in range(len(estimator))])
  32.  
  33. def poisson_regression(X_old,y_old,alpha=0.01,max_iter=4000):
  34.     theta = np.random.rand(4)
  35.     print("Initial Theta: ")
  36.     print(theta)
  37.     iter_mse=[]
  38.     #print(len(X_old))
  39.     #print(len(y_old))
  40.     X = []
  41.     y =[]
  42.  
  43.     for i in range(len(X_old)):
  44.         #if np.isnan(sum(X_old[i]))==False:
  45.         X.append(X_old[i])
  46.         y.append(y_old[i])
  47.     #print(len(X))
  48.     #print(len(y))
  49.     for k in range(max_iter):
  50.         for j in range(len(theta)):
  51.             update = alpha*sum([(y[i] - np.exp(np.dot(theta,X[i])))*X[i][j] for i in range(len(X))])
  52.             theta[j] = theta[j] + update   #updating theta
  53.            
  54.         error = mean_squared_error(theta,X,y)
  55.         #print(error)
  56.         iter_mse.append((k, error))
  57.     return error
  58.  
  59.  
  60.  
  61. path = 'nyc-east-river-bicycle-counts.csv'
  62. dataset= pd.read_csv(path)
  63.  
  64. input_data = dataset.iloc[:, :-1].values
  65. output_data = dataset.iloc[:, 10].values
  66.  
  67. for row in range(len(input_data)):
  68.     for col in range(3, len(input_data[0])):
  69.         input_data[row][col]=modify_value(input_data[row][col])
  70.  
  71. prediction_target = [6,7,8,9,10]
  72.  
  73. for iter in prediction_target:
  74.     X = np.array( [ np.append([1],[i for i in value]) for value in input_data[:,3:6] ]).astype(np.float)
  75.     y = np.array(input_data[:,iter]).astype(np.float)
  76.    
  77.     ms_error = poisson_regression(X,y)
  78.     print(str(iter) + '--> Mean Square Error: ' + str(ms_error))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement