コード例 #1
0
def prob_with_evidence(A, w, L, sample, its, max_prod=False):
    n = len(A)

    domain = Domain(tuple(range(len(w))))
    edge_potential = EdgePotential()
    node_potential = NodePotential(w)

    rvs = list()
    factors = list()

    for i in range(n):
        rv = RV(domain, value=(int(sample[i]) if L[i] == 0 else None))
        rvs.append(rv)
        factors.append(F(node_potential, (rv, )))

    for i in range(n):
        for j in range(n):
            if i < j and A[i, j] == 1:
                factors.append(F(edge_potential, (rvs[i], rvs[j])))

    g = Graph(rvs, factors)

    bp = BP(g, max_prod=max_prod)
    bp.run(iteration=its)

    res = np.zeros((n, len(w)))
    for i in range(n):
        p = bp.prob(rvs[i])
        for k in range(len(w)):
            res[i, k] = p[k]
    return res
コード例 #2
0
def maxprod(A, w, its):
    n = len(A)

    domain = Domain(tuple(range(len(w))))
    edge_potential = EdgePotential()
    node_potential = NodePotential(w)

    rvs = list()
    factors = list()

    for i in range(n):
        rv = RV(domain, value=None)
        rvs.append(rv)
        factors.append(
            F(node_potential, (rv,))
        )

    for i in range(n):
        for j in range(n):
            if i < j and A[i, j] == 1:
                factors.append(
                    F(edge_potential, (rvs[i], rvs[j]))
                )

    g = Graph(rvs, factors)

    bp = BP(g, max_prod=True)
    bp.run(iteration=its)

    x = list()
    for i in range(n):
        x.append(bp.map(rvs[i]))

    return x
コード例 #3
0
def sumprod(A, w, its):
    n = len(A)

    g = build_graph(A, w)

    bp = BP(g)
    bp.run(iteration=its)

    return bp.partition()
コード例 #4
0
ファイル: BPSA.py プロジェクト: RAmenLch/BPSA_OR
    def train(samples,
              W,
              path='.',
              BP=MyBP,
              t0=30000,
              v=0.8,
              error=10**-8,
              **kwargs):
        if 'fname' in kwargs:
            fpath = path + '/W_of_' + kwargs['fname']
        else:
            fpath = path + '/W_of_' + str(np.random.rand())
        print('开始模拟退火训练,训练数据保存至' + fpath)
        t = t0
        W = MyBP.train(samples, W)
        best_W = W
        while MyBP.E(samples, W) > error and t > 3 * error:
            # test
            print('t:', t, '\nE:', MyBP.E(samples, W))
            for i in range(10):
                W_temp = BPSA.genete(W, (-4, 4))
                dc = float(BP.E(samples, W_temp) - BP.E(samples, W))
                pr = min(1, np.exp(-dc / t))
                if pr >= np.random.rand():
                    W = W_temp
                    W = MyBP.train(samples,
                                   W,
                                   iterations=1000 +
                                   min(3 * 10**4, int(3 / (t * 10))))

                    # 保存找到的最优解,如果传入tests,则也验证tests
                    if 'tests' in kwargs:
                        flag = MyBP.E(kwargs['tests'], W) < MyBP.E(
                            kwargs['tests'], best_W)
                    else:
                        flag = True
                    if MyBP.E(samples, W) < MyBP.E(samples, best_W) and flag:
                        best_W = W

                    # test
                    y = BP.output_y(samples[-1][0], W)
                    try:
                        print(MyBP.inverse_sigmoid(y))
                    except ValueError as er:
                        print(er)
            t = v * t

        W = MyBP.train(samples, W, iterations=3 * 10**4)
        s = shelve.open(fpath)
        s['0'] = W
        s['best'] = best_W
        s.close()
        return W
コード例 #5
0
def maxprod(A, w, its):
    n = len(A)

    g = build_graph(A, w)
    rvs = g.rvs

    bp = BP(g, max_prod=True)
    bp.run(iteration=its)

    x = list()
    for i in range(n):
        x.append(bp.map(rvs[i]))

    return x
コード例 #6
0
def prob(A, w, its, max_prod=False):
    n = len(A)

    g = build_graph(A, w)
    rvs = g.rvs

    bp = BP(g, max_prod=max_prod)
    bp.run(iteration=its)

    res = np.zeros((n, len(w)))
    for i in range(n):
        p = bp.prob(rvs[i])
        for k, color in enumerate(w):
            res[i, k] = p[k]
    return res
コード例 #7
0
 def __init__(self, *args, **kwds):
     MyFrame.__init__(self, *args, **kwds)
     self.Bind(wx.EVT_BUTTON, self.onBPNow, self.bpNow_Button)
     self.timer1 = wx.Timer(self)
     self.pressure_timer = wx.Timer(self)
     self.Bind(wx.EVT_TIMER, self.get_bp, self.timer1)
     self.Bind(wx.EVT_TIMER, self.pressure_update, self.pressure_timer)
     self.bp = BP(self,'COM6')
     self.bp_pressure_indicator = wx.Gauge(self.bpbarpanel,-1, 250, size=(50, 100),style=wx.GA_VERTICAL)
     self.bp_pressure_indicator.Enable(False)
     self.bp_status_check()
コード例 #8
0
class bpdemo(MyFrame):
    def __init__(self, *args, **kwds):
        MyFrame.__init__(self, *args, **kwds)
        self.Bind(wx.EVT_BUTTON, self.onBPNow, self.bpNow_Button)
        self.timer1 = wx.Timer(self)
        self.pressure_timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.get_bp, self.timer1)
        self.Bind(wx.EVT_TIMER, self.pressure_update, self.pressure_timer)
        self.bp = BP(self,'COM6')
        self.bp_pressure_indicator = wx.Gauge(self.bpbarpanel,-1, 250, size=(50, 100),style=wx.GA_VERTICAL)
        self.bp_pressure_indicator.Enable(False)
        self.bp_status_check()
    def onBPNow(self, event): # wxGlade: MyFrame.<event_handler>
        self.get_bp()
        
    def get_bp(self):
        self.bp_pressure_indicator.Enable(True)#enable the vertical bar pressurte reading
        self.bpNow_Button.Enable(False)#disable the bp acquire button until the bp reaidng is finished
        self.bp.send_request()
        self.pressure_timer.Start(200)#updates the readings every 200ms
        self.count=1
        
    def pressure_update(self,event):
        #print "timer for pressure"
        press = self.bp.get_reply()
        self.bp.nibp.read(1)
        #print "pressure: ", press, " mmHg"
        press = int(press[1:4])
        print self.count
        print press
        if press != 999:
            self.bpNow_Button.Enable(False)
            self.bp_pressure_indicator.SetValue(press)
            self.bp_infolabel.SetLabel(str(press)+' mmHg')
            self.count=0
            #self.bp_pressure_indicator.SetValue(press)
        else:
            self.bp_pressure_indicator.SetValue(0)
            self.bp_infolabel.SetLabel('BP Acquired')
            self.bp_pressure_indicator.Enable(False)
            self.bpNow_Button.Enable(True)
            self.bp.get()
            self.pressure_timer.Stop()
            
    def bp_status_check(self):
        self.bp.POST()
        self.bp.device_ready()
        self.bp_infolabel.SetLabel(self.bp.device_message)
        
    def updateBPDisplay(self, data):
        self.bpvalue_label.SetLabel(data) 
コード例 #9
0
import func as f
from BP import BP

if __name__ == "__main__":
    x1, y1 = f.generate_linear(n=100)
    x2, y2 = f.generate_XOR_easy()
    inp = int(input())
    if (inp == 1):
        network1 = BP(x1, y1)
        network1.train()
        network1.test()
        f.show_result(network1.x, network1.y, network1.pred_y)
    else:
        network2 = BP(x2, y2)
        network2.train()
        network2.test()
        f.show_result(network2.x, network2.y, network2.pred_y)
コード例 #10
0
ファイル: BPSA.py プロジェクト: RAmenLch/BPSA_OR
 def deltaW2(sample, W):
     input_p = sample[0]
     target = sample[1]
     y = MyBP.output_y(input_p, W)
     return (y - BP.sigmoid(target)) * y * (1 - y)
コード例 #11
0
ファイル: main.py プロジェクト: zhiyugege/BP-Neural-Network
from net import Net
import visdom
from dataset import DataSet
from BP import BP

config = {
    'lr': 0.0001,
    'max_epoch': 500,
    'vis': visdom.Visdom(env=u'plus_loss_test'),
    'net': Net(2, [5, 3, 1], 0.0001, 'relu'),
    'data': DataSet('x1+x2')
}

process = BP(config=config)
process.run()
コード例 #12
0
import sys

sys.setrecursionlimit(1000000)

K = 10

X, Y, X_valid, Y_valid, X_test, Y_test = init_data(K=K)
# X, Y, X_valid, Y_valid, X_test, Y_test = init_data(X_test, Y_test, K=K)

bp = BP(X,
        Y,
        X_valid=X_valid,
        Y_valid=Y_valid,
        X_test=X_test,
        Y_test=Y_test,
        K=10,
        iter_num=1000,
        hidden_num=2,
        hidden_cell_num=100,
        alpha=0.3,
        labd=0.006,
        threshold=0,
        is_save_module=False,
        is_use_module=False)

# bp.check_gd() # 梯度检验
bp.fit()
# bp.predict()
# bp.predict(X_test, Y_test, text='acc_test')
# bp.learn_curve()
コード例 #13
0
    def run(self, n_jobs, date=None):
        # 当date有输入时,为目标日期,当没有输入时,为每天执行,定时刷新上一天的数据
        if date:
            dt_today = dtparser.parse(str(date))
            dt_today = self.calendar[self.calendar > dt_today].iloc[0]
        else:
            dt_today = dtparser.parse(
                datetime.datetime.now().strftime('%Y%m%d'))
        if self.calendar[self.calendar == dt_today].empty:
            print('Not Trade Day...')
        else:
            dt_last_trade_day = self.calendar[
                self.calendar < dt_today].iloc[-1]
            dt_last_week = dt_last_trade_day - relativedelta(weeks=1)
            dt_last_1yr = dt_last_trade_day - relativedelta(years=1)
            last_trade_day = dt_last_trade_day.strftime('%Y%m%d')
            last_week = dt_last_week.strftime('%Y%m%d')
            last_1yr = dt_last_1yr.strftime('%Y%m%d')
            # ---------------------------------------------
            # 更新每日行情
            self.logger.info(
                '//////////////////////////////////////////////////////')
            self.logger.info('Date:  %s' % (dt_today.strftime('%Y%m%d')))
            self.logger.info(
                'BeginTime: %s' %
                datetime.datetime.now().strftime('%Y%m%d-%H:%M:%S'))
            self.logger.info(
                '//////////////////////////////////////////////////////\n')

            # ---------------------------------------------
            self.logger.info(
                '******************************************************')
            self.logger.info(
                '===================基础数据日常更新=====================')
            self.logger.info(
                '******************************************************')
            mkt = mkt_ohlc()
            res = mkt.process_data(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '------------------market data finish------------------')
            st = isst()
            res = st.process_data(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-------------------st data finish---------------------')
            ex = ex_right()
            res = ex.process_data(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-------------------ex right finish--------------------')
            swap = stk_swap()
            res = swap.process_data(last_1yr, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-------------------swap data finish-------------------')
            indu = StkIndustry()
            res = indu.process_data(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '------------------stk industry finish-----------------')
            idx_weight = index_weight()
            res = idx_weight.process_data(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '------------------index weight finish-----------------')
            stk_info = StkInfo()
            res = stk_info.process_data(n_jobs)
            self.log_res(res)
            self.logger.info(
                '--------------------stk info finish-------------------')
            sh = shares_turnover()
            res = sh.process_data(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-------------shares and turnover finish---------------')

            # ---------------------------------------------
            self.logger.info(
                '******************************************************')
            self.logger.info(
                '===================财报数据日常更新=====================')
            self.logger.info(
                '******************************************************')
            bs = BalanceSheetUpdate()
            res = bs.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '----------------balance sheet finish------------------')
            income = IncomeUpdate()
            res = income.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-------------------income finish----------------------')
            cf = CashFlowUpdate()
            res = cf.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '------------------cash flow finish--------------------')
            QnTTM = QnTTMUpdate()
            res = QnTTM.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '---------------------QnTTM finish---------------------')
            wi = WindIndicatorUpdate()
            res = wi.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-----------------WindIndicator finish-----------------')
            bank = Banks()
            res = bank.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '--------------------Banks finish----------------------')
            loan = LoanClassification()
            res = loan.cal_factors(n_jobs)
            self.log_res(res)
            self.logger.info(
                '---------------------Loan finish----------------------')
            sec = SecMonthlyReport()
            res = sec.cal_factors(20100101, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '------------------Securities finish-------------------')
            insur = InsurIndicators()
            res = insur.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-------------------Insurance finish-------------------')

            # ---------------------------------------------
            self.logger.info(
                '******************************************************')
            self.logger.info(
                '===================因子数据日常更新=====================')
            self.logger.info(
                '******************************************************')
            sz = market_cap()
            res = sz.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '------------------market_cap finish-------------------')
            risk_exp = RiskFactorsExposure()
            res = risk_exp.cal_factors(last_week, last_trade_day)
            self.log_res(res)
            self.logger.info(
                '----------------risk exposure finish------------------')
            risk_cov = RiskCov()
            res = risk_cov.cal_factors(last_week, last_trade_day)
            self.log_res(res)
            self.logger.info(
                '------------------risk cov finish---------------------')
            spec_risk = SpecificRisk()
            res = spec_risk.cal_factors(last_week, last_trade_day)
            self.log_res(res)
            self.logger.info(
                '-----------------spec risk finish---------------------')
            ep = EPandEPcut()
            res = ep.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '---------------------EP finish------------------------')
            bp = BP()
            res = bp.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '---------------------BP finish------------------------')
            sp = SP()
            res = sp.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '---------------------SP finish------------------------')
            ncfp = NCFP()
            res = ncfp.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '--------------------NCFP finish-----------------------')
            ocfp = OCFP()
            res = ocfp.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '--------------------OCFP finish-----------------------')
            dp = DP()
            res = dp.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '--------------------DP_LYR finish---------------------')
            ao = Audit()
            res = ao.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '---------------------Audit finish---------------------')
            roe2 = ROE2()
            res = roe2.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '--------------------ROE2 finish-----------------------')
            rnoa = RNOA2()
            res = rnoa.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '--------------------RNOA finish-----------------------')
            roa = ROA2()
            res = roa.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '--------------------ROA2 finish-----------------------')
            cfroi = CFROI2()
            res = cfroi.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '--------------------CFROI finish----------------------')
            gpoa = GPOA2()
            res = gpoa.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '--------------------GPOA finish-----------------------')
            em = EBITMargin()
            res = em.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-----------------EBITMargin finish--------------------')
            emd = EBITMarginDelta()
            res = emd.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '--------------EBITMargin_Delta finish-----------------')
            npg = net_profit_growth()
            res = npg.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '---------------net profit growth finish---------------')
            org = oper_rev_growth()
            res = org.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '----------------oper rev growth finish----------------')
            tlg = TotLiabGrowth()
            res = tlg.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '----------------tot liab growth finish----------------')
            surp = Surprise()
            res = surp.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '------------------Surprise finish---------------------')
            mr = MarginalROE()
            res = mr.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '----------------Marginal ROE finish-------------------')
            amihud = Amihud()
            res = amihud.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-------------------Amihud finish----------------------')
            ln_turnover = LnTurnover()
            res = ln_turnover.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-----------------LnTurnover finish--------------------')
            maxret = MaxRet()
            res = maxret.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-------------------MaxRet finish----------------------')
            pr = PeriodRet()
            res = pr.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-----------------PeriodRet finish---------------------')
            cgo = CGO()
            res = cgo.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '--------------------CGO finish------------------------')
            cov_div = coverage_and_divergence()
            res = cov_div.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '---------------anlst cov div finish-------------------')
            cnp = consensus_net_profit()
            res = cnp.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-----------consensus net profit finish----------------')
            epfy1 = EP_FY1()
            res = epfy1.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '--------------------EP_FY1 finish---------------------')
            score = score_TPER()
            res = score.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '----------------score and TPER finish-----------------')
            roefy1 = ROE_FY1()
            res = roefy1.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-------------------ROE_FY1 finish---------------------')
            peg = PEG()
            res = peg.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '---------------------PEG finish-----------------------')
            npfyg = NetProfitFY1_growth()
            res = npfyg.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-------------NetProfitFY1_growth finish---------------')
            npll = NPL_leverage()
            res = npll.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-----------------NPL leverage finish------------------')
            npldiff = NPL_diff()
            res = npldiff.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-------------------NPL diff finish--------------------')
            pcg = provision_cov_growth()
            res = pcg.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '-------------provision cov growth finish--------------')
            iig = InterestIncome_growth()
            res = iig.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '------------interest income growth finish-------------')
            bpm = BP_M()
            res = bpm.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '---------------------BP_M finish----------------------')
            epm = EP_M()
            res = epm.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '---------------------EP_M finish----------------------')
            spm = SP_M()
            res = spm.cal_factors(last_week, last_trade_day, n_jobs)
            self.log_res(res)
            self.logger.info(
                '---------------------SP_M finish----------------------')

            self.logger.info(
                '//////////////////////////////////////////////////////')
            self.logger.info(
                'EndTime: %s' %
                datetime.datetime.now().strftime('%Y%m%d-%H:%M:%S'))
            self.logger.info(
                '//////////////////////////////////////////////////////\n')
コード例 #14
0
ファイル: Adaboost.py プロジェクト: Fatmanzbx/ImageLearn
 def addtrain(self, iter, stride, dim):
     '''
         Add a weak trainer
         Arguments:
             iter: iterations to train weak BP classifier
             stride: learning rate to train weak BP classifier
     '''
     D = self.data_weight
     L = BP()
     L.study_rate = stride
     L.dim_hide = dim
     L.set_weight(D)
     L.init_network(self.train_x / 255.0, self.train_y)
     for t in range(iter):
         L.train(t)
     e = L.error()
     a = 0.5 * math.log((1 - e) / e)
     print(a)
     if a < 0: return a
     self.subtrainers.append((L))
     self.alpha.append(a)
     for j in range(self.m):
         if L.predict(self.train_x[j]) == self.train_y[j]:
             D[j] = D[j] * math.exp(-a)
         else:
             D[j] = D[j] * math.exp(a)
     sumD = np.sum(D)
     for j in range(self.m):
         D[j] = D[j] / sumD
     self.data_weight = D
     return a