Skip to content
Back to skills

Streaming Prediction Api

ASecurity

Online inference pattern that processes test batches sequentially, updating feature dictionaries incrementally for time-series prediction APIs.

  • 61 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 12, 2026
developmentpythonapi

Works with

  • api

Security analysis

A100/100

Scanned September 12, 2026

npx -y skills add wenmin-wu/ds-skills --skill streaming-prediction-api --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Streaming Prediction Api?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Streaming Prediction Api
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wenmin-wu-streaming-prediction-api/badge)](https://www.skillsdirectory.com/skills/wenmin-wu-streaming-prediction-api)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tabular-streaming-prediction-api
description: >
  Online inference pattern that processes test batches sequentially, updating feature dictionaries incrementally for time-series prediction APIs.
---
# Streaming Prediction API

## Overview

Some competitions (and production systems) serve test data in sequential batches — you predict one batch, then receive the next with updated ground truth. Maintain in-memory feature dictionaries that update after each batch. This pattern handles the Kaggle time-series API and applies to any online learning / streaming prediction scenario.

## Quick Start

```python
from collections import defaultdict
import numpy as np

class StreamingPredictor:
    def __init__(self, model, features, global_mean=0.5):
        self.model = model
        self.features = features
        self.global_mean = global_mean
        self.user_sum = defaultdict(float)
        self.user_count = defaultdict(int)
        self.content_mean = {}  # precomputed from training

    def predict_batch(self, batch_df):
        """Predict and update features for one batch."""
        # Build features from current state
        batch_df['user_mean'] = batch_df['user_id'].map(
            lambda u: self.user_sum[u] / self.user_count[u]
            if self.user_count[u] > 0 else self.global_mean
        )
        batch_df['user_count'] = batch_df['user_id'].map(self.user_count)
        batch_df['content_mean'] = batch_df['content_id'].map(self.content_mean)

        preds = self.model.predict(batch_df[self.features])
        return preds

    def update(self, batch_df, outcomes):
        """Update internal state with observed outcomes."""
        for uid, outcome in zip(batch_df['user_id'], outcomes):
            self.user_sum[uid] += outcome
            self.user_count[uid] += 1

# Usage with Kaggle API
predictor = StreamingPredictor(model, feature_cols)
for test_df, sample_pred_df in env.iter_test():
    preds = predictor.predict_batch(test_df)
    predictor.update(test_df, preds)  # or true outcomes if available
    env.predict(sample_pred_df.assign(answered_correctly=preds))
```

## Workflow

1. Precompute static features from training (content difficulty, etc.)
2. Initialize user-level dictionaries from training history
3. For each test batch: build features → predict → update dictionaries
4. Handle cold-start users with global mean fallback

## Key Decisions

- **Dictionary vs DataFrame**: Dicts are O(1) lookup; DataFrames require merge — dicts are 10x faster for streaming
- **Update timing**: Update AFTER prediction (not before) to avoid leaking current batch
- **Memory**: For millions of users, use `int32` keys and `float32` values
- **Warm start**: Initialize dicts from training data for users seen during training

## References

- Riiid Answer Correctness Prediction (Kaggle)
- Source: [lgbm-with-loop-feature-engineering](https://www.kaggle.com/code/its7171/lgbm-with-loop-feature-engineering)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.