Add Network Modeling Assignment 1 notes
This commit is contained in:
69
IML Projects/Task 1b /task1b_ql4jfi6af0/template_solution.py
Normal file
69
IML Projects/Task 1b /task1b_ql4jfi6af0/template_solution.py
Normal file
@@ -0,0 +1,69 @@
|
||||
# This serves as a template which will guide you through the implementation of this task. It is advised
|
||||
# to first read the whole template and get a sense of the overall structure of the code before trying to fill in any of the TODO gaps.
|
||||
# First, we import necessary libraries:
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
|
||||
# Add any additional imports here (however, the task is solvable without using
|
||||
# any additional imports)
|
||||
# import ...
|
||||
|
||||
def transform_features(X):
|
||||
"""
|
||||
This function transforms the 5 input features of matrix X (x_i denoting the i-th component in a given row of X)
|
||||
into 21 new features phi(X) in the following manner:
|
||||
5 linear features: phi_1(X) = x_1, phi_2(X) = x_2, phi_3(X) = x_3, phi_4(X) = x_4, phi_5(X) = x_5
|
||||
5 quadratic features: phi_6(X) = x_1^2, phi_7(X) = x_2^2, phi_8(X) = x_3^2, phi_9(X) = x_4^2, phi_10(X) = x_5^2
|
||||
5 exponential features: phi_11(X) = exp(x_1), phi_12(X) = exp(x_2), phi_13(X) = exp(x_3), phi_14(X) = exp(x_4), phi_15(X) = exp(x_5)
|
||||
5 cosine features: phi_16(X) = cos(x_1), phi_17(X) = cos(x_2), phi_18(X) = cos(x_3), phi_19(X) = cos(x_4), phi_20(X) = cos(x_5)
|
||||
1 constant feature: phi_21(X)=1
|
||||
|
||||
Parameters
|
||||
----------
|
||||
X: matrix of floats, dim = (700,5), inputs with 5 features
|
||||
|
||||
Returns
|
||||
----------
|
||||
X_transformed: matrix of floats: dim = (700,21), transformed input with 21 features
|
||||
"""
|
||||
X_transformed = np.zeros((700, 21))
|
||||
# TODO: Enter your code here
|
||||
assert X_transformed.shape == (700, 21)
|
||||
return X_transformed
|
||||
|
||||
|
||||
def fit_logistic_regression(X, y):
|
||||
"""
|
||||
This function receives training data points, transforms them, and then fits the logistic regression on this
|
||||
transformed data. Finally, it outputs the weights of the fitted logistic regression.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
X: matrix of floats, dim = (700,5), inputs with 5 features
|
||||
y: array of integers \in {0,1}, dim = (700,), input labels
|
||||
|
||||
Returns
|
||||
----------
|
||||
weights: array of floats: dim = (21,), optimal parameters of logistic regression
|
||||
"""
|
||||
weights = np.zeros((21,))
|
||||
X_transformed = transform_features(X)
|
||||
# TODO: Enter your code here
|
||||
assert weights.shape == (21,)
|
||||
return weights
|
||||
|
||||
|
||||
# Main function. You don't have to change this
|
||||
if __name__ == "__main__":
|
||||
# Data loading
|
||||
data = pd.read_csv("train.csv")
|
||||
y = data["y"].to_numpy()
|
||||
data = data.drop(columns=["Id", "y"])
|
||||
# print a few data samples
|
||||
print(data.head())
|
||||
|
||||
X = data.to_numpy()
|
||||
# The function retrieving optimal LR parameters
|
||||
w = fit_logistic_regression(X, y)
|
||||
# Save results in the required format
|
||||
np.savetxt("./results.csv", w, fmt="%.12f")
|
||||
Reference in New Issue
Block a user