当前位置: 首页>>代码示例>>Python>>正文


Python pykalman.KalmanFilter方法代码示例

本文整理汇总了Python中pykalman.KalmanFilter方法的典型用法代码示例。如果您正苦于以下问题:Python pykalman.KalmanFilter方法的具体用法?Python pykalman.KalmanFilter怎么用?Python pykalman.KalmanFilter使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在pykalman的用法示例。


在下文中一共展示了pykalman.KalmanFilter方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: test_Filters

# 需要导入模块: import pykalman [as 别名]
# 或者: from pykalman import KalmanFilter [as 别名]
def test_Filters(self):
        for model in [self.model, self.mvnmodel]:
            x, y = model.sample_path(500)

            for filter_, props in [
                (SISR, {'particles': 500}),
                (APF, {'particles': 500}),
                (UKF, {}),
                (SISR, {'particles': 500, 'proposal': Linearized(alpha=None)}),
                (APF, {'particles': 500, 'proposal': Linearized()}),
                (SISR, {'particles': 50, 'proposal': Unscented()})
            ]:
                filt = filter_(model, **props).initialize().longfilter(y)
                filtmeans = filt.result.filter_means.numpy()

                # ===== Run Kalman ===== #
                if model is self.model:
                    kf = pykalman.KalmanFilter(transition_matrices=1., observation_matrices=1.)
                else:
                    kf = pykalman.KalmanFilter(transition_matrices=[[0.5, 1 / 3], [0, 1.]], observation_matrices=[1, 2])

                filterestimates = kf.filter(y.numpy())

                if filtmeans.ndim < 2:
                    filtmeans = filtmeans[:, None]

                rel_error = np.median(np.abs((filtmeans - filterestimates[0]) / filterestimates[0]))

                ll = kf.loglikelihood(y.numpy())
                rel_ll_error = np.abs((ll - filt.result.loglikelihood.sum().numpy()) / ll)

                assert rel_error < 0.05 and rel_ll_error < 0.05 
开发者ID:tingiskhan,项目名称:pyfilter,代码行数:34,代码来源:filters.py

示例2: test_kalman_filter

# 需要导入模块: import pykalman [as 别名]
# 或者: from pykalman import KalmanFilter [as 别名]
def test_kalman_filter(self):
        kf = KalmanFilter(transition_matrices = [[1, 1], [0, 1]], observation_matrices = [[0.1, 0.5], [-0.3, 0.0]])
        measurements = np.asarray([[1,0], [0,0], [0,1]])  # 3 observations
        kf = kf.em(measurements, n_iter=5)
        (filtered_state_means, filtered_state_covariances) = kf.filter(measurements)
        (smoothed_state_means, smoothed_state_covariances) = kf.smooth(measurements)
        return filtered_state_means 
开发者ID:Kaggle,项目名称:docker-python,代码行数:9,代码来源:test_pykalman.py

示例3: test_kalman_missing

# 需要导入模块: import pykalman [as 别名]
# 或者: from pykalman import KalmanFilter [as 别名]
def test_kalman_missing(self):
        kf = KalmanFilter(transition_matrices = [[1, 1], [0, 1]], observation_matrices = [[0.1, 0.5], [-0.3, 0.0]])
        measurements = np.asarray([[1,0], [0,0], [0,1]])  # 3 observations
        measurements = np.ma.asarray(measurements)
        measurements[1] = np.ma.masked
        kf = kf.em(measurements, n_iter=5)
        (filtered_state_means, filtered_state_covariances) = kf.filter(measurements)
        (smoothed_state_means, smoothed_state_covariances) = kf.smooth(measurements)
        return filtered_state_means 
开发者ID:Kaggle,项目名称:docker-python,代码行数:11,代码来源:test_pykalman.py

示例4: test_online_update

# 需要导入模块: import pykalman [as 别名]
# 或者: from pykalman import KalmanFilter [as 别名]
def test_online_update(self):
        kf = KalmanFilter(transition_matrices = [[1, 1], [0, 1]], observation_matrices = [[0.1, 0.5], [-0.3, 0.0]])
        measurements = np.asarray([[1,0], [0,0], [0,1]])  # 3 observations
        measurements = np.ma.asarray(measurements)
        measurements[1] = np.ma.masked   # measurement at timestep 1 is unobserved
        kf = kf.em(measurements, n_iter=5)
        (filtered_state_means, filtered_state_covariances) = kf.filter(measurements)
        for t in range(1, 3):
            filtered_state_means[t], filtered_state_covariances[t] = \
                kf.filter_update(filtered_state_means[t-1], filtered_state_covariances[t-1], measurements[t])
        return filtered_state_means 
开发者ID:Kaggle,项目名称:docker-python,代码行数:13,代码来源:test_pykalman.py

示例5: getSmoothTrack

# 需要导入模块: import pykalman [as 别名]
# 或者: from pykalman import KalmanFilter [as 别名]
def getSmoothTrack(self, radarPeriod):
        from pykalman import KalmanFilter
        roughTrackArray = self.backtrackMeasurement()
        initialNode = self.getInitial()
        depth = initialNode.depth()
        initialState = initialNode.x_0
        for i, m in enumerate(roughTrackArray):
            if m is None:
                roughTrackArray[i] = [np.NaN, np.NaN]
        measurements = np.ma.asarray(roughTrackArray)
        for i, m in enumerate(measurements):
            if np.isnan(np.sum(m)):
                measurements[i] = np.ma.masked
        assert measurements.shape[1] == 2, str(measurements.shape)
        if depth < 2:
            pos = measurements.filled(np.nan)
            vel = np.empty_like(pos) * np.nan
            return pos, vel, False
        kf = KalmanFilter(transition_matrices=model.Phi(radarPeriod),
                          observation_matrices=model.C_RADAR,
                          initial_state_mean=initialState)
        kf = kf.em(measurements, n_iter=5)
        (smoothed_state_means, _) = kf.smooth(measurements)
        smoothedPositions = smoothed_state_means[:, 0:2]
        smoothedVelocities = smoothed_state_means[:, 2:4]
        assert smoothedPositions.shape == measurements.shape, \
            str(smoothedPositions.shape) + str(measurements.shape)
        assert smoothedVelocities.shape == measurements.shape, \
            str(smoothedVelocities.shape) + str(measurements.shape)
        return smoothedPositions, smoothedVelocities, True 
开发者ID:erikliland,项目名称:pyMHT,代码行数:32,代码来源:pyTarget.py

示例6: LogLikelihoodWrapper

# 需要导入模块: import pykalman [as 别名]
# 或者: from pykalman import KalmanFilter [as 别名]
def LogLikelihoodWrapper(parameters, y_data, x_data, stage, lambda_g, lambda_z, xi_00, P_00):

        if stage == 1:
            stage, A, H, R, Q, F, x_data, y_data = Rstar.UnpackStage1(parameters, y_data, x_data)

        elif stage == 2:
            stage, A, H, R, Q, F = Rstar.UnpackStage2(parameters, lambda_g)

        elif stage == 3:
            stage, A, H, R, Q, F = Rstar.UnpackStage3(parameters, lambda_g, lambda_z)

        else:
            pass  # PROGRAM SHOULD STOP HERE

        exogenous_variables = (A.dot(x_data.T)).transpose()

        loglike = pykalman.KalmanFilter(transition_matrices=F,
                                        transition_offsets=np.zeros((xi_00.shape[0])),
                                        transition_covariance=Q,
                                        observation_matrices=H,
                                        observation_offsets=exogenous_variables,
                                        observation_covariance=R,
                                        initial_state_mean=xi_00.reshape(xi_00.shape[0]),
                                        initial_state_covariance=P_00).loglikelihood(y_data)

        return loglike 
开发者ID:Finance-Hub,项目名称:FinanceHub,代码行数:28,代码来源:holstonlaubachwilliams.py

示例7: KalmanStatesWrapper

# 需要导入模块: import pykalman [as 别名]
# 或者: from pykalman import KalmanFilter [as 别名]
def KalmanStatesWrapper(parameters, y_data, x_data, stage, lambda_g, lambda_z, xi_00, P_00):

        if stage == 1:
            stage, A, H, R, Q, F, x_data, y_data = Rstar.UnpackStage1(parameters, y_data, x_data)

        elif stage == 2:
            stage, A, H, R, Q, F = Rstar.UnpackStage2(parameters, lambda_g)

        elif stage == 3:
            stage, A, H, R, Q, F = Rstar.UnpackStage3(parameters, lambda_g, lambda_z)

        else:
            pass  # PROGRAM SHOULD STOP HERE

        exogenous_variables = (A.dot(x_data.T)).transpose()  # NEED TO CHECK THE DIMENSION

        kf = pykalman.KalmanFilter(transition_matrices=F,
                                   transition_offsets=np.zeros((xi_00.shape[0])),
                                   transition_covariance=Q,
                                   observation_matrices=H,
                                   observation_offsets=exogenous_variables,
                                   observation_covariance=R,
                                   initial_state_mean=xi_00.reshape(xi_00.shape[0]),
                                   initial_state_covariance=P_00)

        # SHOULD I PUT THIS ON A DATAFRAME?
        filtered_states, filtered_cov = kf.filter(y_data)
        smoothed_states, smoothed_cov = kf.smooth(y_data)

        # If we are on the first stage, we should retrend the esimated states
        if stage == 1:
            T = filtered_states.shape[0]
            filtered_states  = filtered_states + parameters[4]*np.concatenate((np.arange(1, T+1, 1).reshape((T, 1)),
                                                                               np.arange(0, T, 1).reshape((T, 1)),
                                                                               np.arange(-1, T-1, 1).reshape((T, 1))), axis=1)

            smoothed_states = smoothed_states + parameters[4] * np.concatenate((np.arange(1, T + 1, 1).reshape((T, 1)),
                                                                                np.arange(0, T, 1).reshape((T, 1)),
                                                                                np.arange(-1, T - 1, 1).reshape((T, 1))), axis=1)

        return filtered_states, filtered_cov, smoothed_states, smoothed_cov 
开发者ID:Finance-Hub,项目名称:FinanceHub,代码行数:43,代码来源:holstonlaubachwilliams.py

示例8: __init__

# 需要导入模块: import pykalman [as 别名]
# 或者: from pykalman import KalmanFilter [as 别名]
def __init__(self, strategy, onBarFunc, setting=None):

        # OnBar事件回调函数
        self.onBarFunc = onBarFunc

        # 周期变更事件回调函数
        self.onPeriodChgFunc = None

        # K 线服务的策略
        self.strategy = strategy

        self.shortSymbol = EMPTY_STRING  # 商品的短代码
        self.minDiff = 1  # 商品的最小价格单位
        self.round_n = 4  # round() 小数点的截断数量
        self.activeDayJump = False  # 隔夜跳空

        self.is_7x24 = False

        # 当前的Tick
        self.curTick = None
        self.lastTick = None
        self.curTradingDay = EMPTY_STRING

        # K线保存数据
        self.bar = None  # K线数据对象
        self.lineBar = []  # K线缓存数据队列
        self.barFirstTick = False  # K线的第一条Tick数据

        self.export_filename = None
        self.export_fields = []

        # 创建内部变量
        self.init_properties()

        self.init_indicators()

        if setting:
            self.setParam(setting)

            # 修正精度
            if self.minDiff < 1:
                self.round_n = 7

            ## 导入卡尔曼过滤器
            if self.inputKF:
                try:
                    self.kf = KalmanFilter(transition_matrices=[1],
                                      observation_matrices=[1],
                                      initial_state_mean=0,
                                      initial_state_covariance=1,
                                      observation_covariance=1,
                                      transition_covariance=0.01)
                except :
                    self.writeCtaLog(u'导入卡尔曼过滤器失败,需先安装 pip install pykalman')
                    self.inputKF = False 
开发者ID:birforce,项目名称:vnpy_crypto,代码行数:57,代码来源:ctaLineBar.py

示例9: __recountKF

# 需要导入模块: import pykalman [as 别名]
# 或者: from pykalman import KalmanFilter [as 别名]
def __recountKF(self):
        """计算卡尔曼过滤器均线"""
        min_len = 20
        if not self.inputKF or self.kf is None:
            return

        if len(self.lineStateMean) == 0 or len(self.lineStateCovar) == 0:
            listClose = []
            # 3、获取前InputN周期(不包含当前周期)的K线
            if self.mode == self.TICK_MODE:
                if len(self.lineBar)<2:
                    return
                listClose.append(self.lineBar[-2].close)
            else:
                listClose.append(self.lineBar[-1].close)

            try:
                self.kf = KalmanFilter(transition_matrices=[1],
                                       observation_matrices=[1],
                                       initial_state_mean=listClose[-1],
                                       initial_state_covariance=1,

                                       transition_covariance=0.01)
            except:
                self.writeCtaLog(u'导入卡尔曼过滤器失败,需先安装 pip install pykalman')
                self.inputKF = False

            state_means, state_covariances = self.kf.filter(np.array(listClose, dtype=float))
            m = state_means[-1].item()
            c = state_covariances[-1].item()
        else:
            m = self.lineStateMean[-1]
            c = self.lineStateCovar[-1]
            if self.mode == self.TICK_MODE:
                o = self.lineBar[-2].close
            else:
                o = self.lineBar[-1].close

            state_means, state_covariances = self.kf.filter_update(filtered_state_mean=m,
                                                                   filtered_state_covariance=c,
                                                                   observation=np.array(o, dtype=float))
            m = state_means[-1].item()
            c = state_covariances[-1].item()

        if len(self.lineStateMean) > min_len:
            del self.lineStateMean[0]
        if len(self.lineStateCovar) > min_len:
            del self.lineStateCovar[0]

        self.lineStateMean.append(m)
        self.lineStateCovar.append(c) 
开发者ID:birforce,项目名称:vnpy_crypto,代码行数:53,代码来源:ctaLineBar.py

示例10: update_enter_exit_levels

# 需要导入模块: import pykalman [as 别名]
# 或者: from pykalman import KalmanFilter [as 别名]
def update_enter_exit_levels(self):
        if (self.kf is None):
            Y = np.log(pd.Series(self.data0.get(size=self.max_lookback, ago=0)).values)[:, np.newaxis]
            X = np.log(pd.Series(self.data1.get(size=self.max_lookback, ago=0)).values)[:, np.newaxis]
            
            # observation matrix
            C = np.hstack((np.ones_like(X), X))
            C = C.reshape(self.max_lookback, 1, 2)

            # state transition matrix
            I = np.array([[[1, 0], 
                          [0, 1]]])
            T = I.repeat(self.max_lookback - 1, axis = 0)

            self.kf = KalmanFilter(em_vars=['transition_covariance', 
                                       'observation_covariance', 
                                       'initial_state_mean', 
                                       'initial_state_covariance'], 
                                   transition_matrices=T,
                                   observation_matrices=C,
                                   n_dim_state=2, 
                                   n_dim_obs=1)
            
            # run EM algorithm
            self.kf.em(X=Y, n_iter=10)
            self.spread_std = math.sqrt(self.kf.observation_covariance[0][0])
            
            # filtering
            filtered_state_means, filtered_state_covariances = self.kf.filter(X=Y)
            self.filtered_state_means, self.filtered_state_covariances = filtered_state_means[-1], filtered_state_covariances[-1]

            # update entry and exit levels
            self.upper_limit = self.enter_threshold_size * self.spread_std
            self.lower_limit = -1 * self.enter_threshold_size * self.spread_std
            self.up_medium = self.exit_threshold_size * self.spread_std
            self.low_medium = -1 * self.exit_threshold_size * self.spread_std
            
            self.alpha, self.intercept = self.filtered_state_means[1], self.filtered_state_means[0]
            self.allow_trade = False
 
        else:
            self.alpha, self.intercept = self.filtered_state_means[1], self.filtered_state_means[0]
            observation_t = np.array([math.log(self.data0[0])])
            observation_matrix_t = np.array([1, math.log(self.data1[0])]).reshape(1, 2)
            I = np.array([[[1, 0], 
                          [0, 1]]])

            self.filtered_state_means, self.filtered_state_covariances = (
                self.kf.filter_update(
                    self.filtered_state_means,
                    self.filtered_state_covariances,
                    observation=observation_t,
                    transition_matrix=I.reshape(2, 2),
                    observation_matrix=observation_matrix_t
                )
            )
            self.allow_trade = True 
开发者ID:wywongbd,项目名称:pairstrade-fyp-2019,代码行数:59,代码来源:ptstrategy_cointegration_kalman.py


注:本文中的pykalman.KalmanFilter方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。