Skip to content

Commit Live PR #42

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 17 commits into
base: master
Choose a base branch
from
Binary file modified __pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q01_load_data/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q01_load_data/__pycache__/build.cpython-36.pyc
Binary file not shown.
10 changes: 9 additions & 1 deletion q01_load_data/build.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
# %load q01_load_data/build.py
import pandas as pd
path = './data/student-mat.csv'

# Write your code below

def load_data(path):
df = pd.read_table(path, sep=';')
return df

df = load_data(path)


Binary file modified q01_load_data/tests/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q01_load_data/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.
Binary file modified q02_data_split/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q02_data_split/__pycache__/build.cpython-36.pyc
Binary file not shown.
9 changes: 9 additions & 0 deletions q02_data_split/build.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
# %load q02_data_split/build.py
from greyatomlib.multivariate_regression_project.q01_load_data.build import load_data
from sklearn.model_selection import train_test_split
import pandas as pd
df = load_data('data/student-mat.csv')

# Write your code below
def split_dataset(df):
X = df.drop(['G3'], 1)
y = df['G3']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state = 42)

return X_train, X_test, y_train, y_test

X_train, X_test, y_train, y_test = split_dataset(df)


Binary file modified q02_data_split/tests/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q02_data_split/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.
Binary file modified q03_data_encoding/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q03_data_encoding/__pycache__/build.cpython-36.pyc
Binary file not shown.
9 changes: 8 additions & 1 deletion q03_data_encoding/build.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# %load q03_data_encoding/build.py
from greyatomlib.multivariate_regression_project.q01_load_data.build import load_data
from greyatomlib.multivariate_regression_project.q02_data_split.build import split_dataset
from sklearn.preprocessing import LabelEncoder
Expand All @@ -8,7 +9,13 @@
x_train, x_test, y_train, y_test = split_dataset(df)

# Write your code below
def label_encode(X_train, X_test):
lblEncd = LabelEncoder()
X_transform = x_train.apply(lblEncd.fit_transform)
X_test_transform = x_test.apply(lblEncd.fit_transform)


return X_transform, X_test_transform

X_transform, X_test_transform = label_encode(x_train, x_test)


Binary file modified q03_data_encoding/tests/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q03_data_encoding/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.
Binary file modified q03_ohe_encoder/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q03_ohe_encoder/__pycache__/build.cpython-36.pyc
Binary file not shown.
15 changes: 11 additions & 4 deletions q03_ohe_encoder/build.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# %load q03_ohe_encoder/build.py
from greyatomlib.multivariate_regression_project.q01_load_data.build import load_data
from greyatomlib.multivariate_regression_project.q02_data_split.build import split_dataset
from sklearn.preprocessing import OneHotEncoder
from greyatomlib.multivariate_regression_project.q03_data_encoding.build import label_encode
import pandas as pd
import numpy as np

Expand All @@ -10,10 +12,15 @@

category_index = [x for x in range(len(df.columns)) if df[df.columns[x]].dtype == 'object']


# Write your code below

def ohe_encode(x_train, x_test, category_index=category_index):
x_train,x_test = label_encode(x_train,x_test)
oneHotEncd = OneHotEncoder(categorical_features=category_index, sparse=False)
X_transform = oneHotEncd.fit_transform(x_train)
X_test_transform = oneHotEncd.fit_transform(x_test)


return X_transform, X_test_transform


X_transform, X_test_transform = ohe_encode(x_train, x_test)


Binary file modified q03_ohe_encoder/tests/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q03_ohe_encoder/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.
Binary file modified q04_data_visualisation/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q04_data_visualisation/__pycache__/build.cpython-36.pyc
Binary file not shown.
11 changes: 6 additions & 5 deletions q04_data_visualisation/build.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
# -*- coding: utf-8 -*-
# %load q04_data_visualisation/build.py
from greyatomlib.multivariate_regression_project.q01_load_data.build import load_data
from greyatomlib.multivariate_regression_project.q02_data_split.build import split_dataset
from greyatomlib.multivariate_regression_project.q03_data_encoding.build import label_encode

import matplotlib.pyplot as plt
from pandas.plotting import scatter_matrix
data = load_data('data/student-mat.csv')
data = load_data('data/student-mat.csv')
x_train, x_test, y_train, y_test = split_dataset(data)
x_train,x_test = label_encode(x_train,x_test)

# Write your code below



def visualise_data(data, figname):
return scatter_matrix(data)



Binary file modified q04_data_visualisation/tests/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q04_data_visualisation/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.
Binary file modified q05_linear_regression_model/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q05_linear_regression_model/__pycache__/build.cpython-36.pyc
Binary file not shown.
9 changes: 9 additions & 0 deletions q05_linear_regression_model/build.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# %load q05_linear_regression_model/build.py
from greyatomlib.multivariate_regression_project.q01_load_data.build import load_data
from greyatomlib.multivariate_regression_project.q02_data_split.build import split_dataset

Expand All @@ -12,4 +13,12 @@


# Write your code below
def linear_regression(X, y):
lr = LinearRegression()
lm = lr.fit(X, y)

return lm

linear_regression(x_train, y_train)


Binary file not shown.
Binary file modified q05_linear_regression_model/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.
Binary file modified q06_cross_validation/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q06_cross_validation/__pycache__/build.cpython-36.pyc
Binary file not shown.
7 changes: 7 additions & 0 deletions q06_cross_validation/build.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# %load q06_cross_validation/build.py
from greyatomlib.multivariate_regression_project.q01_load_data.build import load_data
from greyatomlib.multivariate_regression_project.q02_data_split.build import split_dataset

Expand All @@ -18,4 +19,10 @@
model =linear_regression(x_train,y_train)

# Write your code below
def cross_validation_regressor(Model, X, y):
r2_score = np.array(cross_val_score(Model, X, y, cv=3)).mean()
return r2_score

cross_validation_regressor(model, x_train, y_train)


Binary file modified q06_cross_validation/tests/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q06_cross_validation/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.
Binary file modified q07_regression_pred/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q07_regression_pred/__pycache__/build.cpython-36.pyc
Binary file not shown.
17 changes: 15 additions & 2 deletions q07_regression_pred/build.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# %load q07_regression_pred/build.py

from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score

Expand All @@ -10,13 +11,25 @@

df = load_data('data/student-mat.csv')

x_train, x_test, y_train, y_test = split_dataset(df)
x_train, x_test, y_train, y_test = split_dataset(df)

x_train,x_test = label_encode(x_train,x_test)

model =linear_regression(x_train,y_train)

val = cross_validation_regressor(model,x_train,y_train)


# Write your code below
def regression_predictor(model,X,y):
y_pred = model.predict(X)
mse = mean_squared_error(y,y_pred)
mae = mean_absolute_error(y,y_pred)
r2 = r2_score(y,y_pred)

return y_pred, mse, mae, r2

regression_predictor(model, x_test, y_test)




Binary file modified q07_regression_pred/tests/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q07_regression_pred/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.
Binary file modified q08_linear_model/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q08_linear_model/__pycache__/build.cpython-36.pyc
Binary file not shown.
8 changes: 8 additions & 0 deletions q08_linear_model/build.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# %load q08_linear_model/build.py
import pandas as pd
import numpy as np
from greyatomlib.multivariate_regression_project.q01_load_data.build import load_data
Expand All @@ -16,5 +17,12 @@
y_pred, mse, mae, r2 = regression_predictor(model, x_test, y_test)

# Write your code below
def linear_model(x_train, x_test, y_train, y_test):
G = linear_regression(x_train, y_train)
stats = pd.DataFrame([(val,mae,mse,r2)], columns = ['cross_val','rmse','mae','r2'])

return G, y_pred, stats

linear_model(x_train, x_test, y_train, y_test)


Binary file modified q08_linear_model/tests/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q08_linear_model/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.
Binary file modified q09_advanced_model_q01_lasso/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q09_advanced_model_q01_lasso/__pycache__/build.cpython-36.pyc
Binary file not shown.
12 changes: 12 additions & 0 deletions q09_advanced_model_q01_lasso/build.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# %load q09_advanced_model_q01_lasso/build.py
from greyatomlib.multivariate_regression_project.q01_load_data.build import load_data

from greyatomlib.multivariate_regression_project.q02_data_split.build import split_dataset
Expand All @@ -19,5 +20,16 @@
x_train,x_test = label_encode(x_train,x_test)

# Write your solution here
def lasso(x_train, x_test, y_train, y_test, alpha=0.1):
G = Lasso(alpha = alpha)
G.fit(x_train, y_train)
val = cross_validation_regressor(G,x_train,y_train)
y_pred, mse, mae, r2 = regression_predictor(G, x_test, y_test)

stats = pd.DataFrame([(val,mae,r2,np.sqrt(mse))], columns = ['cross_val','mae','r2','rmse'])

return G, y_pred, stats

lasso(x_train, x_test, y_train, y_test)


Binary file not shown.
Binary file modified q09_advanced_model_q01_lasso/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.
Binary file modified q09_advanced_model_q02_ridge/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q09_advanced_model_q02_ridge/__pycache__/build.cpython-36.pyc
Binary file not shown.
12 changes: 11 additions & 1 deletion q09_advanced_model_q02_ridge/build.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# %load q09_advanced_model_q02_ridge/build.py
from greyatomlib.multivariate_regression_project.q01_load_data.build import load_data

from greyatomlib.multivariate_regression_project.q02_data_split.build import split_dataset
Expand All @@ -19,7 +20,16 @@
x_train,x_test = label_encode(x_train,x_test)

# Write your code below

def ridge(x_train, x_test, y_train, y_test, alpha=0.1):
G = Ridge(alpha = alpha,normalize = True)
G.fit(x_train, y_train)
val = cross_validation_regressor(G,x_train,y_train)
y_pred, mse, mae, r2 = regression_predictor(G, x_test, y_test)

stats = pd.DataFrame([(val,mae,r2,np.sqrt(mse))], columns = ['cross_val','mae','r2','rmse'])

return G, y_pred, stats

ridge(x_train, x_test, y_train, y_test)


Binary file not shown.
Binary file modified q09_advanced_model_q02_ridge/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.
Binary file modified q10_data_missing_values/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q10_data_missing_values/__pycache__/build.cpython-36.pyc
Binary file not shown.
9 changes: 9 additions & 0 deletions q10_data_missing_values/build.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# %load q10_data_missing_values/build.py
from greyatomlib.multivariate_regression_project.q01_load_data.build import load_data
from greyatomlib.multivariate_regression_project.q02_data_split.build import split_dataset
from greyatomlib.multivariate_regression_project.q03_data_encoding.build import label_encode
Expand All @@ -10,4 +11,12 @@
x_train,x_test = label_encode(x_train,x_test)

# Write your code below
def describe_df(x_train):
describe = x_train.describe()
value_counts = x_train.apply(pd.value_counts)

return describe, value_counts

describe_df(x_train)


Binary file modified q10_data_missing_values/tests/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q10_data_missing_values/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.
Binary file not shown.
Binary file not shown.
22 changes: 17 additions & 5 deletions q11_feature_selection_q01_plot_corr/build.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@

# %load q11_feature_selection_q01_plot_corr/build.py
import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt
from matplotlib.pyplot import yticks, xticks, subplots, set_cmap
from greyatomlib.multivariate_regression_project.q01_load_data.build import load_data


from greyatomlib.multivariate_regression_project.q02_data_split.build import split_dataset



from greyatomlib.multivariate_regression_project.q03_data_encoding.build import label_encode

df = load_data('data/student-mat.csv')
Expand All @@ -21,6 +20,19 @@

#Remember to concatenate training features and labels if you want to check that scatterplots which I would prefer.You are free to explore labels to labels, features to features ,etc scatterplots as you want by passing arguments
#============================================================================
#visualise_data(pd.concat([x_train,y_train],axis=1),"../images/data_image.png")
#visualise_data(pd.concat([x_train,y_train],axis=1),'../images/data_image.png')

# Write your solution here:
def plot_corr(df, size=11):
fig, axis = plt.subplots(figsize=(size, size))
cor = df.corr()
plt.set_cmap(cmap='YlOrRd')
axis.matshow(cor)

plt.xticks(range(len(cor.columns)), cor.columns, rotation=90);
plt.yticks(range(len(cor.columns)), cor.columns);
plt.show()

plot_corr(df)


Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
19 changes: 18 additions & 1 deletion q11_feature_selection_q02_best_k_features/build.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
# %load q11_feature_selection_q02_best_k_features/build.py
# Default imports
from sklearn.feature_selection import SelectPercentile
from sklearn.feature_selection import f_regression
import numpy as np
import matplotlib.pyplot as plt
import operator
from greyatomlib.multivariate_regression_project.q01_load_data.build import load_data
from greyatomlib.multivariate_regression_project.q02_data_split.build import split_dataset
from greyatomlib.multivariate_regression_project.q03_data_encoding.build import label_encode
Expand All @@ -17,11 +19,26 @@

x_train,x_test = label_encode(x_train,x_test)


np.random.seed(9)
# Write your code below
def percentile_k_features(x_train, y_train, k=50):
Selector_f = SelectPercentile(f_regression, percentile=k)
fs = Selector_f.fit(x_train, y_train)
cols = list(x_train.columns)
scores = list(fs.scores_)

feature_score = dict()
top_k_predictors = []
for i in range(0,len(cols)):
feature_score[cols[i]] = scores[i]

sorted_x = sorted(feature_score.items(), key=operator.itemgetter(1), reverse=True)
for obj in range(0, 16):
top_k_predictors.append(sorted_x[obj][0])

return top_k_predictors

percentile_k_features(x_train, y_train)



Binary file not shown.
Binary file not shown.
Binary file modified q12_feature_selection/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q12_feature_selection/__pycache__/build.cpython-36.pyc
Binary file not shown.
10 changes: 10 additions & 0 deletions q12_feature_selection/build.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# %load q12_feature_selection/build.py
# import matplotlib.pyplot as plt
from greyatomlib.multivariate_regression_project.q01_load_data.build import load_data
from greyatomlib.multivariate_regression_project.q02_data_split.build import split_dataset
Expand All @@ -16,3 +17,12 @@
x_train,x_test = label_encode(x_train,x_test)

# Write your code below
def feature_selection(x_train, y_train, k=50):
plot_corr(pd.concat([x_train, y_train],axis=1))
reduced_features = percentile_k_features(x_train,y_train,k)

return reduced_features

feature_selection(x_train, y_train)


Binary file modified q12_feature_selection/tests/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q12_feature_selection/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.
Binary file modified q13_plot_residuals/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q13_plot_residuals/__pycache__/build.cpython-36.pyc
Binary file not shown.
10 changes: 8 additions & 2 deletions q13_plot_residuals/build.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@


# %load q13_plot_residuals/build.py
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

# Write your code below
def plot_residuals(y_test, y_pred, name):
plt.plot(y_test, y_pred)
plt.show()


Binary file modified q13_plot_residuals/tests/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q13_plot_residuals/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.
Binary file modified q14_benchmarking/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q14_benchmarking/__pycache__/build.cpython-36.pyc
Binary file not shown.
18 changes: 18 additions & 0 deletions q14_benchmarking/build.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# %load q14_benchmarking/build.py
from greyatomlib.multivariate_regression_project.q01_load_data.build import load_data
from greyatomlib.multivariate_regression_project.q02_data_split.build import split_dataset

Expand Down Expand Up @@ -26,5 +27,22 @@


# Write your code below
def create_stats(x_train, x_test, y_train, y_test):
lasso_modl, lasso_y_pred, lasso_stat = lasso(x_train, x_test, y_train, y_test,0.1)
ridge_modl, ridge_y_pred, ridge_stat = ridge(x_train, x_test, y_train, y_test,0.1)
features = feature_selection(x_train, y_train, k=50)

x_train_ft = x_train[features].copy()
x_test_ft = x_test[features].copy()

lasso_modl_ft, lasso_y_pred_ft, lasso_stat_ft = lasso(x_train_ft, x_test_ft, y_train, y_test,0.1)
ridge_modl_ft, ridge_y_pred_ft, ridge_stat_ft = ridge(x_train_ft, x_test_ft, y_train, y_test,0.1)
features = feature_selection(x_train_ft, y_train, k=50)

complete_stats = pd.concat([lasso_stat,lasso_stat_ft,ridge_stat,ridge_stat_ft])

return complete_stats

create_stats(x_train, x_test, y_train, y_test)


Binary file modified q14_benchmarking/tests/__pycache__/__init__.cpython-36.pyc
Binary file not shown.
Binary file modified q14_benchmarking/tests/__pycache__/test.cpython-36.pyc
Binary file not shown.