Lassocv的嵌套交叉验证

时间:2020-02-19 16:11:34

标签: python machine-learning cross-validation

我是Python的新手,正在学习ISLR。在其中,我正在查看波士顿数据集并尝试使用不同的模型。 其中之一是sklearn的LassoCV。 我在这里阅读了嵌套循环的重要性,并从训练数据集中找到了最佳的lambda。 See here the link 我正在尝试了解如何使用此特定的lambda来查看测试数据集的MSE。 请帮忙! 这是我的代码:

##importing packages

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.linear_model import LinearRegression, LassoCV, RidgeCV
    import statsmodels.api as sm
    from sklearn.preprocessing import StandardScaler
    from sklearn.model_selection import cross_val_score, train_test_split
    from sklearn.datasets import load_boston
    bos = load_boston()

##creating the dataset

    boston = pd.DataFrame(bos.data)
    boston.columns = bos.feature_names

##defining X,y and spliting to train and test data

    y = boston['CRIM']
    X = boston.drop('CRIM',axis=1)
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

##Lassocv first loop function
    lassocv =LassoCV(alphas=np.logspace(-5,-2.5,300),cv=5,normalize=True,max_iter=10000) #normalize functions as scale
    scaler = StandardScaler()
    lassocv.fit(X_train,y_train)
    mses = np.mean(lassocv.mse_path_,axis=1)
    alphas = lassocv.alphas_
    min_alpha = lassocv.alpha_
    min_mse = np.min(mses)

现在我拥有正确的lambda,如何将其合并到MSE中以检查测试数据? 谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用sklearn中的指标。

MSE metric

您可以使用以下代码:

from sklearn.metrics import mean_squared_error
y_pred = lassocv.predict(y_test)
print('MSE', mean_squared_error(y_test, y_pred)