Пример #1
0
def do_Lasso_Kfold(y,yname,files,X):
    subject_num = y.shape[0]
    output = Outputsclass(subject_num,y,yname)
    output.prepare_kfold()
    data, idx, img  = load_data(files)
    
    for train, test in cv.StratifiedKFold(np.zeros(subject_num), k = 4):
        # PCA
        pca, data_red = do_PCA(data[train])
        output.pca.append(pca)
        data_red_test = pca.transform(data[test])
        # Build design matrix & test vector
        desmat_cv = np.hstack((data_red,X[train]))
        desmat_cv = np.array(desmat_cv)
        y_cv = y[train]
        test_vec = np.hstack((data_red_test,X[test]))
        test_vec = np.array(test_vec)
        #Lasso
        lasso = do_LASSO(y_cv,desmat_cv)
        output.lasso.append(lasso)
        output.rsq[test] = lasso.score(desmat_cv,y_cv)
        output.adjrsq[test] = 1 - (1 - output.rsq[test])*(subject_num-1-1)/(subject_num-1 - lasso.coef_.shape[0] -1)
        # Prediction
        output.prediction[test] = lasso.predict(test_vec)
        output.pred_errors[test] = y[test] - output.prediction[test]
        print "did prediction, error = ", output.pred_errors[test]
        output.append_kfold(train,test)
        
    return output