Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
e4c4401
Touch init.py
joel-becker Dec 6, 2019
dde1760
Add lisence
joel-becker Dec 6, 2019
16bc4f5
Add readme
joel-becker Dec 6, 2019
423468b
Readme title/subtitle
joel-becker Dec 6, 2019
9571401
Team members and function add
joel-becker Dec 6, 2019
2039b46
Move to project 2 folder
joel-becker Dec 6, 2019
d2ddc75
Remove old paddleboat folder
joel-becker Dec 6, 2019
9bbc68e
Add OLS.py
joel-becker Dec 6, 2019
276e45a
Name functions
joel-becker Dec 6, 2019
ecd2e7b
get_betas pseudocode
joel-becker Dec 6, 2019
2b1b005
Get residuals function
joel-becker Dec 6, 2019
d989cef
Residuals pseudo-code
joel-becker Dec 6, 2019
f352cd5
Get SEs pseudocode
joel-becker Dec 6, 2019
349564a
get_n pseudocode
joel-becker Dec 6, 2019
16e9cfe
Reorder working messages
joel-becker Dec 6, 2019
6b54a09
Space functions better
joel-becker Dec 6, 2019
c248d10
merging for README and setup.py
nadavtadelis Dec 6, 2019
cba6c0d
Some docstrings and change to get_residuals
joel-becker Dec 6, 2019
80196c7
Remaining SEs
joel-becker Dec 6, 2019
e6cc5d0
Merge pull request #1 from joel-becker/paddle_nadav
nadavtadelis Dec 6, 2019
3d50c95
Docstring main, comment fake transpose
joel-becker Dec 6, 2019
d39121f
Parameterise get_ses
joel-becker Dec 6, 2019
08c785d
Function to return degrees of freedom when given np.array.
casey-mcquillan Dec 6, 2019
b5501b9
r^2 function
joel-becker Dec 6, 2019
dd7e4b3
Merge pull request #2 from casey-mcquillan/paddle
joel-becker Dec 6, 2019
25af723
creating all the ols functions
nadavtadelis Dec 6, 2019
736dd2e
Merge pull request #1 from joel-becker/paddle
casey-mcquillan Dec 6, 2019
0c1fe8c
Add LASSO.py
joel-becker Dec 6, 2019
64a59db
Merge branch 'paddle' of https://github.com/joel-becker/modularizatio…
joel-becker Dec 6, 2019
543e35a
Loss function
joel-becker Dec 6, 2019
a78f739
Rename loss function return
joel-becker Dec 6, 2019
2c9c1e6
Get SSE function
joel-becker Dec 6, 2019
206303f
Correct loss function
joel-becker Dec 6, 2019
f52b7a3
Merge remote-tracking branch 'upstream/paddle' into paddle
casey-mcquillan Dec 6, 2019
87945fb
Fixed transpose function
casey-mcquillan Dec 6, 2019
4ac9bc9
Barebones grid search function
joel-becker Dec 6, 2019
1a90791
Merge pull request #3 from casey-mcquillan/paddle
joel-becker Dec 6, 2019
4d35d4c
Improve presentation of grid search func
joel-becker Dec 6, 2019
a2a19cb
Merge branch 'paddle' of https://github.com/joel-becker/modularizatio…
joel-becker Dec 6, 2019
e40b0ac
Remove stray line from grid func
joel-becker Dec 6, 2019
45d7022
Correctly format docstring quotes
joel-becker Dec 6, 2019
e838c52
Lambda -> Lamb
casey-mcquillan Dec 6, 2019
3720bec
Merge branch 'paddle' into paddle
joel-becker Dec 6, 2019
27beda1
Merge pull request #4 from casey-mcquillan/paddle
joel-becker Dec 6, 2019
5404c2d
made changes to lambda
harrietjeon Dec 6, 2019
2d69dc4
changing psuedo code to python for lasso
nadavtadelis Dec 6, 2019
0e32891
Update functionality in readme
joel-becker Dec 6, 2019
ba01885
Merge branch 'paddle' of https://github.com/joel-becker/modularizatio…
joel-becker Dec 6, 2019
c0593e7
merging issues
nadavtadelis Dec 6, 2019
aa4d154
Merge branch 'paddle' of https://github.com/joel-becker/modularizatio…
nadavtadelis Dec 6, 2019
9aa7b8f
correcting some base functions, computing lasso coeffs
nadavtadelis Dec 7, 2019
b43016e
added note about inefficiency of inverse vs SVD
nadavtadelis Dec 7, 2019
1c90dcd
Empty test scripts
joel-becker Dec 7, 2019
f321958
Merge branch 'paddle' of https://github.com/joel-becker/modularizatio…
joel-becker Dec 7, 2019
49c15dd
OLS tests
joel-becker Dec 7, 2019
e4daf5e
LASSO tests
joel-becker Dec 7, 2019
7f2449c
Test init
joel-becker Dec 7, 2019
bd6a127
started work on bootstrapping SEs
nadavtadelis Dec 7, 2019
fd2c9d8
Merge branch 'paddle' of https://github.com/joel-becker/modularizatio…
nadavtadelis Dec 7, 2019
c5811d0
Create testing_OLS.py
casey-mcquillan Dec 7, 2019
b8ef520
creating fit function, returns coeffs and bootstrapped errors
nadavtadelis Dec 7, 2019
195a3df
renaming for clarity
nadavtadelis Dec 7, 2019
916d355
Subfolder inits
joel-becker Dec 7, 2019
b6261a2
Adding path for OLS on test
casey-mcquillan Dec 7, 2019
a73dfd8
Merge pull request #5 from casey-mcquillan/paddle
joel-becker Dec 7, 2019
a43afe4
changed indentation of docstrings
nadavtadelis Dec 7, 2019
63691b3
added synth data and tested coeff estimates from OLS
nadavtadelis Dec 7, 2019
eed1eac
Very minor changes
joel-becker Dec 7, 2019
7748a2f
fix some suff, function read incorrrectly, need to fix. unclear why b…
nadavtadelis Dec 7, 2019
003a11f
Merge branch 'paddle' of https://github.com/joel-becker/modularizatio…
nadavtadelis Dec 7, 2019
75026de
super weird function behavior, need to figure out
nadavtadelis Dec 7, 2019
10b1c44
Add travis file
joel-becker Dec 7, 2019
329b9bc
Full first draft travis
joel-becker Dec 7, 2019
e2acb34
remove requitements.txt
joel-becker Dec 7, 2019
2570e67
Remove all package install
joel-becker Dec 7, 2019
6d431d0
Pushing current testing file @ 3:15pm
casey-mcquillan Dec 7, 2019
0b907b2
Merge branch 'paddle' into paddle
joel-becker Dec 7, 2019
9fe8ae8
Merge pull request #6 from casey-mcquillan/paddle
joel-becker Dec 7, 2019
2af7108
fixed lasso functions, added Results_wrapper class
nadavtadelis Dec 7, 2019
901dc06
Merge branch 'paddle' of https://github.com/joel-becker/modularizatio…
nadavtadelis Dec 7, 2019
37fe10d
change to correct naming
nadavtadelis Dec 7, 2019
ff93616
Rename LASSO to RIDGE, include OLS tests
joel-becker Dec 7, 2019
8ff65d1
Rename LASSO to RIDGE, include OLS tests 2
joel-becker Dec 7, 2019
011f5ff
Actually move OLS tests to RIDGE script
joel-becker Dec 7, 2019
5c93e72
Rename lassos to ridges
joel-becker Dec 7, 2019
05f9434
Corrected tests on OLS. R^2 and Coefficents work, but concerns about …
casey-mcquillan Dec 8, 2019
7544bd9
Resolved merge conflcits with origin
casey-mcquillan Dec 8, 2019
e41095a
Resolving merge conflict.
casey-mcquillan Dec 8, 2019
97be740
Add simulation folder/script
joel-becker Dec 8, 2019
bde2d10
Commenting out print statements.
casey-mcquillan Dec 8, 2019
17e4bc8
Merge pull request #7 from casey-mcquillan/paddle
joel-becker Dec 8, 2019
f7fa641
Pseuocode Jim's algo
joel-becker Dec 8, 2019
9b3a328
MVN
joel-becker Dec 8, 2019
87ac060
Many simulations func
joel-becker Dec 8, 2019
8669829
Give funcs docstrings
joel-becker Dec 8, 2019
2fd33aa
All early functions
joel-becker Dec 8, 2019
d33c6f9
Minor changes
joel-becker Dec 8, 2019
7527505
Replace w Jim code
joel-becker Dec 8, 2019
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
15 changes: 15 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
language: python

# ===== Linux ======
dist: xenial
python:
- 3.7
matrix:
include:
- name: "Python 3.7 on linux"
os: linux
language: python
before_install:
- pip install -U pip
- cd Projects/project_2_packages/paddleboat
script: python -m unittest -v
212 changes: 212 additions & 0 deletions Projects/project_2_packages/paddleboat/LASSO/LASSO_depreciated.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,212 @@
import pandas as pd
import numpy as np

def get_betas(X, Y):
"""Get betas (according to OLS formula)"""
betas = (np.transpose(X) * X)^(-1) * (np.transpose(X) * Y) # transpose is a numpy function

print("Working!")
return betas

def get_residuals(betas, X, Y):
"""Get residuals (according to OLS formula)"""
y_hat = betas * X
residuals = Y - y_hat

print("Working!")
return residuals

def get_n(X, Y):
"""Get N, check independent vs dependent variables"""
n_X = length(X)
n_Y = length(Y)

if n_X == n_Y:
n = n_X
else:
print("Error!")

print("Working!")
return n

def get_ses(residuals, X, Y):
"""Get SEs (according to OLS formula)"""
residuals2 = residuals^2
XX = (np.transpose(X) * X)^(-1) # transpose is not a real function
N = get_n(X, Y)
ses = (residuals2 / (N-1)) * XX

print("Working!")
return ses

def get_r2(Y, X, betas):
"""Get R^2"""
y_hat = X * betas
y_bar = mean(y)

SSR = sum((y_hat - y_bar)^2)
SST = sum((y - y_bar)^2)

r2 = SSR / SST

print("Working!")
return r2

def get_sse(Y, X, betas):
"""Get sum of squared errors"""
y_hat = X * beta
sse = (Y - y_hat) ** 2

print("Working!")
return sse

def get_loss_function(SSE, lamb, betas):
"""Get loss function"""
betas_no_intercept = betas[1:len(betas)]
loss_function = SSE + lamb * np.sum(np.abs(betas_no_intercept))

print("Working!")
return loss_function

def get_coeffs_given_lambda(X, Y, lamb):
Z = # STANDARDIZED X
Y_c = # CENTERED Y
coefficients = np.linalg.inv(Z.transpose().dot(Z).values() + lamb * np.identity(X.shape[1])).dot(Z.transpose().dot(Y_c))
return(coefficients)

def pick_lowest_lambda(X, Y):
"""Pick lowest lambda"""
lambs = range(0, 1, 100)
losses = list()

for l in lambs:
coeffs = get_coeffs_given_lambda(X, Y, l)
SSE = get_sse(Y, X, coeffs)
loss = loss_function(SSE, l, coeffs)
losses.append(loss)

min_loss = min(losses)
lowest_lambda = loss(min_loss_position_in_list)

print("Working!")
return(lowest_lamb)

def main():
"""Performs OLS, prints output to table"""
print("Working!")
import pandas as pd
import numpy as np

def get_betas(X, Y):
'''
Get betas (according to OLS formula)
'''
betas = (np.transpose(X) * X)^(-1) * (np.transpose(X) * Y) # transpose is a numpy function

print("Working!")
return betas

def get_residuals(betas, X, Y):
'''
Get residuals (according to OLS formula)
'''
y_hat = betas * X
residuals = Y - y_hat

print("Working!")
return residuals

def get_n(X, Y):
'''
Get N, check independent vs dependent variables
'''
n_X = length(X)
n_Y = length(Y)

if n_X == n_Y:
n = n_X
else:
print("Error!")

print("Working!")
return n

def get_ses(residuals, X, Y):
'''
Get SEs (according to OLS formula)
'''
residuals2 = residuals^2
XX = (np.transpose(X) * X)^(-1) # transpose is not a real function
N = get_n(X, Y)
ses = (residuals2 / (N-1)) * XX

print("Working!")
return ses

def get_r2(Y, X, betas):
'''
Get R^2
'''
y_hat = X * betas
y_bar = mean(y)

SSR = sum((y_hat - y_bar)^2)
SST = sum((y - y_bar)^2)

r2 = SSR / SST

print("Working!")
return r2

def get_sse(Y, X, betas):
'''
Get sum of squared errors'''
y_hat = X * betas
sse = (Y - y_hat) ** 2

print("Working!")
return sse

def get_loss_function(SSE, lamb, betas):
'''
Get loss function
'''
betas_without_intercept = betas[1:length(betas)]
loss_function = SSE + lamb * sum(abs(betas_without_intercept))

print("Working!")
return loss_function

def get_coefficients_given_lambda(lamb):
'''
Get coefficients
'''
return(coefficients)

def pick_lowest_lamda():
'''
Pick lowest lambda
'''
lambs = [0.001, 0.01, 0.1, 0.5, 1, 2, 10]
l_num = length(lam)
pred_num = X.shape[1]
losses = list(length(lamb))

# prepare data for enumerate
coeff_a = np.zeros((l_num, pred_num))

for ind, i in enumerate(lambs):
loss = loss_function(lamb)
list.append(loss)

min_loss = min(losses)
lowest_lamb = loss(min_loss_position_in_list)

print("Working!")
return(lowest_lamb)

def main():
'''
Performs LASSO, prints output to table
'''
print("Working!")
Loading