Skip to main content

LLM-powered estimators for scikit-learn pipelines

Project description

promptlearn

GitHub last commit PyPI - Version PyPI - Python Version PyPI - Wheel PyPI - Implementation Licence

promptlearn brings large language models into your scikit-learn workflow. It is able to look at data, reason about the meaning of inputs and outputs, relate it to and identify relevant knowledge of the world, automatically building standalone executable Python code that augments the relationships of the original data with relevant materialized world-knowledge about categorical variables.


📊 Outperforming Traditional Models with Built-In Knowledge

Consider a simple binary classification task: predicting whether an animal is a mammal given things like its name, weight, and lifespan.

Traditional models depend solely on the input features. But promptlearn models can use their internal understanding of zoology to form highly accurate rules, pulling in data about known mammals, and making that knowledge available in explicit reference tables for subsequent predictions.

model accuracy (higher is better) fit_time_sec predict_time_sec
promptlearn_o3-mini 0.94 49.11 0.0028
promptlearn_o4-mini 0.86 60.96 0.0024
promptlearn_gpt-3.5-turbo 0.66 20.25 0.0027
promptlearn_gpt-4o 0.66 43.93 0.0023
logistic_regression 0.60 0.02 0.0010
decision_tree 0.53 0.0014 0.0005
gradient_boosting 0.53 0.02 0.0011
promptlearn_gpt-4 0.40 12.49 0.0022
dummy 0.34 0.0006 0.0001
random_forest 0.28 0.01 0.0017

This type of semantic generalization is a powerful advantage for LLM-backed models.


Now compare performance on a regression task where the data contains samples of objects falling from different heights, under different gravity. This is a classic physics problem, with a well-known equation:

fall_time_s = sqrt((2 * height_m) / gravity_mps2)

promptlearn estimators are able to recover this exact formula, using just the dataframe itself, and use it to generate perfect predictions:

model mse (lower is better) fit_time_sec predict_time_sec
promptlearn_gpt-4o 0.000 2.92 0.001
promptlearn_o3-mini 0.000 10.80 0.001
promptlearn_o4-mini 0.000 7.96 0.001
random_forest 0.028 0.01 0.002
gradient_boosting 0.035 0.01 0.001
decision_tree 0.067 0.001 0.000
linear_regression 0.498 0.001 0.000
dummy 5.273 0.001 0.000
promptlearn_gpt-3.5-turbo 18.193 3.01 0.002
promptlearn_gpt-4 855.445 2.43 0.001

No feature engineering was performed. No physics constants were added. The model discovered the rule and applied it directly. Classical regressors, by contrast, approximated a curve but missed the exact structure.

These results highlight the practical benefit of reasoning models: they learn compact, expressive heuristics and can outperform traditional systems when symbolic insight or background knowledge is essential.


🤖 Estimators Powered by Language

promptlearn provides scikit-learn-compatible estimators that use LLMs as the modeling engine:

  • PromptClassifier – for predicting classes through generalized reasoning
  • PromptRegressor – for modeling numeric relationships in data

These estimators follow the same API as other scikit-learn models (fit, predict, score) but operate via dynamic prompt construction and few-shot abstraction.


🕳 Zero-Example Learning

If you call .fit() with no rows — just column names — promptlearn will still return a working model.

This is possible because the LLM can hallucinate a plausible mapping based on:

  • Column names
  • Prior knowledge
  • Type hints or value patterns

This makes rapid prototyping and conceptual modeling trivial.


🧪 Native .sample() Support

You can generate synthetic rows directly from any trained model using .sample(n):

>>> model.sample(3)
fruit    is_citrus
Lime     1
Banana   0
Orange   1

This is useful for:

  • Understanding what the model believes
  • Creating test sets or bootstrapped data
  • Building readable examples from internal logic

💾 Save and Reload with joblib

Like any scikit-learn model, promptlearn estimators can be serialized:

import joblib

joblib.dump(model, "model.joblib")
model = joblib.load("model.joblib")

The LLM client is excluded from the saved file and re-initialized on load. The heuristic remains intact, interpretable, and ready to use.


📚 Related Work

Scikit-LLM

Scikit-LLM provides zero- and few-shot classification through template-based prompting.
It is lightweight and NLP-focused.

promptlearn offers a broader modeling philosophy:

Capability Scikit-LLM promptlearn
Produces runnable Python code ❌ No ✅ Yes
Regression support ❌ No ✅ Yes

📁 License

MIT © 2025 Fredrik Linaker

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

promptlearn-0.2.1.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

promptlearn-0.2.1-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

Details for the file promptlearn-0.2.1.tar.gz.

File metadata

  • Download URL: promptlearn-0.2.1.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for promptlearn-0.2.1.tar.gz
Algorithm Hash digest
SHA256 89cf48741713621125bd02d7d76af20b2ebac14e881f3c4ab8c0b7db99a66f75
MD5 1554ef7146721512dde33c9abecdb132
BLAKE2b-256 b9fa4d9cf0f94a3c1b2b48363dd0a7be9321737b905fdd90fb4d2db41f9ac4bc

See more details on using hashes here.

File details

Details for the file promptlearn-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: promptlearn-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 13.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for promptlearn-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 28279bfb941be86fbebcb149bcb3b6c0bb31d813ec266045a5853da423a806e6
MD5 4a19f55ec50afbb2b4f7240b223eec67
BLAKE2b-256 97693dacdd380924d5ea97cb7e8271571cafbe1f48eb6190000daa999716c3c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page