Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion q01_load_data/build.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
# %load q01_load_data/build.py
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

path ='data/elecdemand.csv'

def q01_load_data(path):
data = pd.read_csv(path)
data['Datetime']=pd.to_datetime(data['Datetime'])
return data.shape, data

# q01_load_data(path)




Binary file added q01_load_data/tests/test_sol.pkl
Binary file not shown.
Binary file added q01_load_data/tests/user_sol.pkl
Binary file not shown.
13 changes: 13 additions & 0 deletions q02_data_splitter/build.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
# %load q02_data_splitter/build.py
import pandas as pd
import numpy as np
from sklearn.model_selection import TimeSeriesSplit
from greyatomlib.time_series_day_02_project.q01_load_data.build import q01_load_data

path = 'data/elecdemand.csv'

def q02_data_splitter(path):
np.random.seed(9)
shape,data = q01_load_data(path)
tscv = TimeSeriesSplit(n_splits=2)
split_data = list(tscv.split(data))
return split_data

# q02_data_splitter(path)




Binary file added q02_data_splitter/tests/test_sol.pkl
Binary file not shown.
Binary file added q02_data_splitter/tests/user_sol.pkl
Binary file not shown.
16 changes: 16 additions & 0 deletions q03_time_plot/build.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
# %load q03_time_plot/build.py
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from greyatomlib.time_series_day_02_project.q01_load_data.build import q01_load_data
plt.switch_backend('agg')

path = 'data/elecdemand.csv'

def q03_time_plot(path):
shp,df=q01_load_data(path)
plt.figure(figsize=(16, 6))
plt.plot(df['Datetime'], df['Demand'])
plt.xlabel('Time')
plt.ylabel('Demand')
plt.title('Electricity Demand in Australia for a year')
plt.show()

# q03_time_plot(path)




12 changes: 11 additions & 1 deletion q04_boxplot/build.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
# %load q04_boxplot/build.py

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from greyatomlib.time_series_day_02_project.q01_load_data.build import q01_load_data
plt.switch_backend('agg')
import seaborn as sns

def q04_boxplot(path):
df_shape,df = q01_load_data(path)
sns.boxplot(x='WorkDay',y='Demand',data=df)

# q04_boxplot('data/elecdemand.csv')




Binary file added q04_boxplot/tests/test_sol.pkl
Binary file not shown.
Binary file added q04_boxplot/tests/user_sol.pkl
Binary file not shown.
17 changes: 17 additions & 0 deletions q05_feature_engineering/build.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,26 @@
# %load q05_feature_engineering/build.py
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from greyatomlib.time_series_day_02_project.q01_load_data.build import q01_load_data
plt.switch_backend('agg')

path='data/elecdemand.csv'

def q05_feature_engineering(path):
shape,df = q01_load_data(path)
corr=np.corrcoef(df['Temperature'], df['Demand'])
plt.figure(figsize=(16, 6))
plt.scatter(df['Temperature'], df['Demand'])
plt.xlabel('Temperature')
plt.ylabel('Demand')
plt.title('Temperature vs Demand')
plt.show()

# q05_feature_engineering(path)






Binary file added q05_feature_engineering/tests/test_sol.pkl
Binary file not shown.
Binary file added q05_feature_engineering/tests/user_sol.pkl
Binary file not shown.
15 changes: 13 additions & 2 deletions q05_feature_engineering_part2/build.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
# %load q05_feature_engineering_part2/build.py
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from greyatomlib.time_series_day_02_project.q01_load_data.build import q01_load_data
from greyatomlib.time_series_day_02_project.q01_load_data.build import q01_load_data
plt.switch_backend('agg')


def q05_feature_engineering_part2(path):
df_shape, df = q01_load_data(path)
df['hour'] = df['Datetime'].dt.hour
hours = []
for i in range(24):
one = df[df['hour'] == i]['Demand'].values
hours.append(one)
plt.boxplot(hours, labels=[str(i) for i in range(24)])
plt.show()



Binary file added q05_feature_engineering_part2/tests/test_sol.pkl
Binary file not shown.
Binary file added q05_feature_engineering_part2/tests/user_sol.pkl
Binary file not shown.
15 changes: 15 additions & 0 deletions q05_feature_engineering_part3/build.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,23 @@
# %load q05_feature_engineering_part3/build.py

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from greyatomlib.time_series_day_02_project.q01_load_data.build import q01_load_data
plt.switch_backend('agg')

def q05_feature_engineering_part3(path):
df_shape,df = q01_load_data(path)
df['month'] = df['Datetime'].dt.strftime('%b')
demands=[]
months = ['Jan','Feb','Mar','Apr','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
for month in months:
temp = df[df['month']==month]['Demand']
demands.append(list(temp))
plt.boxplot(demands,labels=months)
q05_feature_engineering_part3('data/elecdemand.csv')





Binary file added q05_feature_engineering_part3/tests/test_sol.pkl
Binary file not shown.
Binary file added q05_feature_engineering_part3/tests/user_sol.pkl
Binary file not shown.
20 changes: 16 additions & 4 deletions q05_feature_engineering_part4/build.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,21 @@
# %load q05_feature_engineering_part2/build.py
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from greyatomlib.time_series_day_02_project.q01_load_data.build import q01_load_data
plt.switch_backend('agg')

def q05_feature_engineering_part4():

path='data/elecdemand.csv'

def q05_feature_engineering_part4(path):
shape, data = q01_load_data(path)
data['hour'] = data['Datetime'].dt.hour
data['month'] = data['Datetime'].dt.strftime('%b')
data['Peakhours']=data['hour'].apply(lambda x : 1 if x in range(6,20) else 0)
data['Peakmonths']=data['month'].apply(lambda x : 1 if x in ['Feb', 'May', 'Jun', 'Jul', 'Aug'] else 0)
return data

# q05_feature_engineering_part4(path)




Binary file added q05_feature_engineering_part4/tests/test_sol.pkl
Binary file not shown.
Binary file added q05_feature_engineering_part4/tests/user_sol.pkl
Binary file not shown.
24 changes: 23 additions & 1 deletion q06_linear_regression/build.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# %load q06_linear_regression/build.py
import pandas as pd
import numpy as np
import math
Expand All @@ -6,7 +7,28 @@
from greyatomlib.time_series_day_02_project.q05_feature_engineering_part4.build import q05_feature_engineering_part4
from greyatomlib.time_series_day_02_project.q02_data_splitter.build import q02_data_splitter

fe = ["WorkDay", "Peakhours", "Peakmonths"]
fe = ['WorkDay', 'Peakhours', 'Peakmonths']

path = 'data/elecdemand.csv'

def q06_linear_regression(path,columns = fe, random_state =9):
np.random.seed(random_state)
data = q05_feature_engineering_part4(path)
splits = q02_data_splitter(path)

rmse = []
for i in splits:
train = i[0]
valid = i[1]
x_train, y_train = data[fe].values[train], data['Demand'].values[train]
x_valid, y_valid = data[fe].values[valid], data['Demand'].values[valid]
model = LinearRegression()
model.fit(x_train, y_train)
pred = model.predict(x_valid)
measure = math.pow(mean_squared_error(y_valid, pred), 0.5)
rmse.append(measure)
return np.mean(rmse)




Binary file added q06_linear_regression/tests/test_sol.pkl
Binary file not shown.
Binary file added q06_linear_regression/tests/user_sol.pkl
Binary file not shown.
25 changes: 24 additions & 1 deletion q07_randomforest_regressor/build.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# %load q07_randomforest_regressor/build.py
import pandas as pd
import numpy as np
import math
Expand All @@ -6,7 +7,29 @@
from greyatomlib.time_series_day_02_project.q05_feature_engineering_part4.build import q05_feature_engineering_part4
from greyatomlib.time_series_day_02_project.q02_data_splitter.build import q02_data_splitter

fe = ["WorkDay", "Peakhours", "Peakmonths"]
fe = ['WorkDay', 'Peakhours', 'Peakmonths']
path = 'data/elecdemand.csv'

def q07_randomforest_regressor(path,columns = fe, random_state =9):
np.random.seed(random_state)
data = q05_feature_engineering_part4(path)
splits = q02_data_splitter(path)
rmse = []
for i in splits:
train = i[0]
valid = i[1]
x_train, y_train = data[fe].values[train], data['Demand'].values[train]
x_valid, y_valid = data[fe].values[valid], data['Demand'].values[valid]
model = RandomForestRegressor( n_estimators=50, min_samples_leaf=30, random_state=10)
model.fit(x_train, y_train)
pred = model.predict(x_valid)
measure = math.pow(mean_squared_error(y_valid, pred), 0.5)
rmse.append(measure)
return np.mean(rmse)

# q07_randomforest_regressor(path,columns = fe, random_state =9)





28 changes: 26 additions & 2 deletions q08_gradientboosting_regressor/build.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# %load q08_gradientboosting_regressor/build.py
import pandas as pd
import numpy as np
import math
Expand All @@ -6,5 +7,28 @@
from greyatomlib.time_series_day_02_project.q05_feature_engineering_part4.build import q05_feature_engineering_part4
from greyatomlib.time_series_day_02_project.q02_data_splitter.build import q02_data_splitter

fe = ["WorkDay", "Peakhours", "Peakmonths"]

fe = ['WorkDay', 'Peakhours', 'Peakmonths']

path = 'data/elecdemand.csv'

def q08_gradientboosting_regressor(path,columns = fe, random_state =9):
np.random.seed(random_state)
data = q05_feature_engineering_part4(path)
splits = q02_data_splitter(path)
rmse = []
for i in splits:
train = i[0]
valid = i[1]
x_train, y_train = data[fe].values[train], data['Demand'].values[train]
x_valid, y_valid = data[fe].values[valid], data['Demand'].values[valid]
model = GradientBoostingRegressor( n_estimators=200, min_samples_leaf=10, learning_rate=0.01, random_state=random_state)
model.fit(x_train, y_train)
pred = model.predict(x_valid)
measure = math.pow(mean_squared_error(y_valid, pred), 0.5)
rmse.append(measure)
return np.mean(rmse)

# q08_gradientboosting_regressor(path)



Binary file added test_sol.pkl
Binary file not shown.
Binary file added user_sol.pkl
Binary file not shown.