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
7 changes: 6 additions & 1 deletion q01_load_data/build.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
# %load q01_load_data/build.py
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

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



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.
11 changes: 10 additions & 1 deletion q02_data_splitter/build.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
# %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

def q02_data_splitter(path):
np.random.seed(9)
df_shape,df = q01_load_data(path)
time_series_Split = TimeSeriesSplit(n_splits=2)
train = time_series_Split.split(X=df)
return list(train)

q02_data_splitter('data/elecdemand.csv')



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.
7 changes: 7 additions & 0 deletions q03_time_plot/build.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
# %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')
import datetime

def q03_time_plot(path):
df_shape,df = q01_load_data(path)
plt.plot(df['Datetime'],df['Demand'])
q03_time_plot('data/elecdemand.csv')


10 changes: 9 additions & 1 deletion q04_boxplot/build.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
# %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.
5 changes: 5 additions & 0 deletions q05_feature_engineering/build.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
# %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')

def q05_feature_engineering(path):
df_shape,df = q01_load_data(path)
plt.scatter(df['Temperature'],df['Demand'])

q05_feature_engineering('data/elecdemand.csv')


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.
14 changes: 12 additions & 2 deletions q05_feature_engineering_part2/build.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
# %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.
13 changes: 12 additions & 1 deletion q05_feature_engineering_part3/build.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
# %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.
14 changes: 11 additions & 3 deletions q05_feature_engineering_part4/build.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
# %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():

def q05_feature_engineering_part4(path):
df_shape,df = q01_load_data(path)
df['hour'] = df['Datetime'].dt.hour
df['month'] = df['Datetime'].dt.strftime('%b')
df['Peakhours'] = ((df['hour']>=6) & (df['hour']<20))*1
df['Peakmonths'] = df['month'].apply(lambda x : 1 if x in ['Feb', 'May', 'Jun', 'Jul', 'Aug'] else 0)
return df
q05_feature_engineering_part4('data/elecdemand.csv')


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.
26 changes: 24 additions & 2 deletions q06_linear_regression/build.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,34 @@
# %load q06_linear_regression/build.py
import pandas as pd
import numpy as np
import math
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
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
from greyatomlib.time_series_day_02_project.q01_load_data.build import q01_load_data

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

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

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)
'write your solution here'

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']

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)
'write your solution here'

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('data/elecdemand.csv',columns = fe, random_state =9)




26 changes: 24 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,26 @@
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']
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)
'write your solution here'

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('data/elecdemand.csv',columns = fe, random_state =9)


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