test_R2[name].append(model.score(X[test,:],y[test]))
     test_pred = model.predict(X[test,:])

     if name == 'RF': #test feature importance for RF model
         for col_name in use_cols:
             Xshuff = X[test,:].copy()
             col_idx = col_dict[col_name]
             obj = slice(col_idx[0],col_idx[-1]+1)
             shuff_R2 = np.zeros(n_feature_shuffs)
             for n in np.arange(n_feature_shuffs):                
                 np.random.shuffle(Xshuff[:,obj])
                 shuff_R2[n] = model.score(Xshuff, y[test])    
             RF_feature_imp[col_name].append(test_R2[name][-1] - np.mean(shuff_R2))
  
     returns[name].append(LCM.pick_K_returns( 
                             test_pred, net_returns[test], prnc_weights[test],
                            pick_K_list, n_boots=100, sub_marg=False))
                            
     grade_returns[name].append(LCM.pick_K_returns_by_grade(
                             test_pred, net_returns[test], prnc_weights[test],
                            LD.iloc[test][grade_group], grade_pick_K))
                            
     grade_makeup[name][cnt,:] = LCM.get_choice_grade_makeup(test_pred, LD.iloc[test][grade_group], 
                                                             unique_grades, grade_pick_K)     
 cnt += 1

# Annualize portfolio returns, and convert them into numpy arrays as needed
rel_returns = {}
marg_returns = LCM.annualize_returns(np.array(marg_returns))
for name, model in model_set:
    returns[name] = LCM.annualize_returns(np.array(returns[name]))
示例#2
0
        if name == 'RF':  #test feature importance for RF model
            for col_name in use_cols:
                Xshuff = X[test, :].copy()
                col_idx = col_dict[col_name]
                obj = slice(col_idx[0], col_idx[-1] + 1)
                shuff_R2 = np.zeros(n_feature_shuffs)
                for n in np.arange(n_feature_shuffs):
                    np.random.shuffle(Xshuff[:, obj])
                    shuff_R2[n] = model.score(Xshuff, y[test])
                RF_feature_imp[col_name].append(test_R2[name][-1] -
                                                np.mean(shuff_R2))

        returns[name].append(
            LCM.pick_K_returns(test_pred,
                               net_returns[test],
                               prnc_weights[test],
                               pick_K_list,
                               n_boots=100,
                               sub_marg=False))

        grade_returns[name].append(
            LCM.pick_K_returns_by_grade(test_pred, net_returns[test],
                                        prnc_weights[test],
                                        LD.iloc[test][grade_group],
                                        grade_pick_K))

        grade_makeup[name][cnt, :] = LCM.get_choice_grade_makeup(
            test_pred, LD.iloc[test][grade_group], unique_grades, grade_pick_K)
    cnt += 1

# Annualize portfolio returns, and convert them into numpy arrays as needed
rel_returns = {}