def plot_predictions(prog_num, bp, inX, iny):
    plt.cla()
    X_bp, y_bp = ascdata.get_bp_data(prog_num, bp, inX, iny)
    iny_pred = clf.predict(X_bp)
    plot_inputs = range(1,11)
    plt.plot(plot_inputs, y_bp.flatten(), 'bx')
    plt.plot(plot_inputs, iny_pred.flatten(),'ro')
    plt.savefig("multitask_" + str(prog_num) + "_" + str(bp) + ".png")
    bp_rms = ascdata.multi_RMSE(y_bp, iny_pred)
    bp_r2 = ascdata.multi_r2(y_bp, iny_pred)
    print "rms total for prognum", prog_num, "at breakpoint", bp, bp_rms
    print "r2 total for prognum", prog_num, "at breakpoint", bp, bp_r2
def get_kfold_scores(inX, iny, k):
    N = inX.shape[0]
    kf = KFold(N, k, shuffle=True)
    mses=[]
    r2s = []
    for train_index, test_index in kf:
        kf_X_train, kf_X_test = inX[train_index], inX[test_index]
        kf_y_train, kf_y_test = iny[train_index], iny[test_index]
        kf_y_test_pred = clf.predict(kf_X_test)
        mse = ascdata.multi_MSE(kf_y_test, kf_y_test_pred)
        mses.append(mse)
        print "mse:", mse
        r2 = ascdata.multi_r2(kf_y_test, kf_y_test_pred)
        r2s.append(r2)
        print "r2:", r2
    overall_mse = np.mean(mses)
    overall_rmse = sqrt(overall_mse)
    overall_r2 = np.mean(r2s)
    print "KFold cross validation MSE:", overall_mse
    print "KFold cross validation RMSE:", overall_rmse
    print "KFold cross validation r2:", overall_r2