Exemplo n.º 1
0
 def score(self, X, y, sample_weight=None):
     p = self.predict(X)
     t = y[:, 2]
     pu, pl = p[:, 0], p[:, 1]
     picp = picpf(t, pu, pl)
     pinew = pinewf(pu, pl)
     cwc = cwcf(picp, pinew, self.mu, self.eta)
     return cwc
Exemplo n.º 2
0
def xxx_cross_validation(t,
                         u,
                         l,
                         xxx_u,
                         xxx_l,
                         mu=0.9,
                         eta=10,
                         cv=3,
                         is_plot=False,
                         plt_no=None):
    tscv = TimeSeriesSplit(n_splits=cv)
    cwc_l = []
    picp_l = []
    pinew_l = []
    plt_num = 0
    for tr_idx, te_idx in tscv.split(t):
        tr_u, te_u = u[tr_idx], u[te_idx]
        tr_l, te_l = l[tr_idx], l[te_idx]
        tr_t, te_t = t[tr_idx], t[te_idx]

        pred_u = xxx_predict(tr_u, te_u, xxx_u, range(1, 3))
        pred_l = xxx_predict(tr_l, te_l, xxx_l, range(3))
        d = max(len(te_t) - len(pred_u), len(te_t) - len(pred_l))

        if is_plot:
            plt.figure(figsize=(8, 6))
            plt.subplot(plt_no)
            rd.plot_ts_ul(te_t[d:],
                          pred_u,
                          pred_l,
                          title='Cross validation %d' % plt_num)
            plt_no += 1
            plt_num += 1

        picp = picpf(te_t[d:], pred_u, pred_l)
        picp_l.append(picp)
        pinew = pinewf(pred_u, pred_l)
        pinew_l.append(pinew)
        cwc = cwcf(picp, pinew, mu, eta)
        cwc_l.append(cwc)
    return np.array(cwc_l).mean(), np.array(picp_l).mean(), np.array(
        pinew_l).mean()
Exemplo n.º 3
0
def xxx_test_validation(test,
                        u_train,
                        u_test,
                        l_train,
                        l_test,
                        xxx_u,
                        xxx_l,
                        mu=0.9,
                        eta=10,
                        is_plot=False,
                        plt_num=111):
    pred_u = xxx_predict(u_train, u_test, xxx_u, range(1, 3))
    pred_l = xxx_predict(l_train, l_test, xxx_l, range(3))
    d = max(len(test) - len(pred_u), len(test) - len(pred_l))

    if is_plot:
        plt.subplot(plt_num)
        plt.figure(figsize=(8, 6))
        rd.plot_ts_ul(test[d:], pred_u, pred_l)

    picp = picpf(test[d:], pred_u, pred_l)
    pinew = pinewf(pred_u, pred_l)
    cwc = cwcf(picp, pinew, mu, eta)
    return cwc, picp, pinew
Exemplo n.º 4
0
    def cross_cwcf(self,
                   gamma_u,
                   C_u,
                   gamma_l,
                   C_l,
                   d_u=None,
                   d_l=None,
                   cv=3,
                   mu=0.6,
                   eta=10,
                   isplt=False):
        """计算交叉验证的cwc(区间覆盖宽度标准) picp(区间覆盖率) pinew(区间宽度)
        cv: 折数
        mu: 预测置信区间
        eta: 惩罚因子,表现算法偏好度。eta增加提升picp;eta减小,提升pinew
        isplt: 是否将每折画图
        """
        tscv = TimeSeriesSplit(n_splits=cv)
        cwc_l = []
        picp_l = []
        pinew_l = []
        i_cv = 0
        plot_num = cv * 100 + 3 * 10
        for tridx, teidx in tscv.split(self.cv_t):
            cv_tr_u, cv_te_u = self.cv_u[tridx], self.cv_u[teidx]
            cv_tr_l, cv_te_l = self.cv_l[tridx], self.cv_l[teidx]
            cv_tr_t, cv_te_t = self.cv_t[tridx], self.cv_t[teidx]

            svr_u = svm.SVR(gamma=gamma_u, C=C_u)
            svr_l = svm.SVR(gamma=gamma_l, C=C_l)
            pu, pl, d = self.svm_predict(cv_tr_u, cv_te_u, cv_tr_l, cv_te_l,
                                         svr_u, svr_l, d_u, d_l)

            if isplt:
                plt.figure(figsize=(15, 6))
                plt.subplot(plot_num + 1)
                plt.title('cv train %d' % (i_cv))
                plt.plot(cv_tr_u, color='blue', marker='o')
                plt.plot(cv_tr_l, color='blue', marker='o')
                plt.plot(cv_tr_t, color='gray', marker='x')
                plt.subplot(plot_num + 2)
                plt.title('cv test %d' % (i_cv))
                plt.plot(cv_te_u, color='blue', marker='o')
                plt.plot(cv_te_l, color='blue', marker='o')
                plt.plot(cv_te_t, color='gray', marker='x')
                plt.subplot(plot_num + 3)
                plt.title('cv predict %d' % (i_cv))
                plt.plot(pu, color='blue', marker='o')
                plt.plot(pl, color='blue', marker='o')
                plt.plot(cv_te_t[d:], color='gray', marker='x')
            i_cv += 1
            plot_num += 3

            picp = picpf(cv_te_t[d:], pu, pl)
            picp_l.append(picp)
            pinew = pinewf(pu, pl)
            pinew_l.append(pinew)
            cwc = cwcf(picp, pinew, mu, eta)
            cwc_l.append(cwc)
        return np.array(cwc_l).mean(), np.array(picp_l).mean(), np.array(
            pinew_l).mean()