# Lasso Model

lasso = LassoCV(alphas = np.logspace(-4, 0, 100), normalize = True, cv = 5, max_iter = 100000)
lasso.fit(x_train.values, y_train.values)

mse = np.mean(lasso.mse_path_, axis = 1)

# Plot
fig, ax = plt.subplots(figsize=(12,6));
ax.plot(lasso.alphas_, mse, color='red');
ax.plot(lasso.alpha_, np.min(mse), marker='o', color='blue', markersize=8);
ax.set_xlabel('alpha');
ax.set_ylabel('MSE for Train Set');

lasso.predicted = lasso.predict(college_test[features].values)

# MSE
MSE = np.mean((college_test.Apps.values-lasso.predicted)**2)
print(MSE) #1865826.9804312338
print(pd.Series(data = np.hstack([lasso.intercept_,lasso.coef_]), index=['Intercept'] + features))

# part e

# PCR Model

scores = []

num_components = np.arange(1,len(features)+1)
num_samples = x_train.shape[0]