PyOD v3.6.1
Maintenance and contributor release since v3.6.0. No breaking API changes; buildable detector count unchanged at 61.
Highlights
- PyThresh v1 support (#684, @KulikDM): the
pyod.models.thresholdswrappers and theBaseDetectorthreshold path now use the PyThresh v1 API (.fit()/.labels_/.predict()instead of.eval()); the dependency pin moves topythresh>=1.0.0. - EmbeddingOD air-gapped and pre-instantiated encoder support (#696, @sunnyguntuka): pass a pre-loaded
SentenceTransformerinstance directly as the encoder, or a local filesystem path loaded withlocal_files_only=True(no Hub call) for offline use. Also fixes a resolver-order bug where aSentenceTransformerinstance was wrapped as aCallableEncoder(callingmodel(X)instead ofmodel.encode(X)). - DataFrame feature-name warning fix (#692, @ugbotueferhire; closes #540):
GMM,IForest,LOF, andOCSVMnow runcheck_arrayinsidedecision_function, so scoring a pandas DataFrame after fitting no longer emits the scikit-learn feature-nameUserWarning. Thepredict/predict_proba/predict_confidencepaths route throughdecision_function, so the single fix covers them. - Audio docs:
AudioAEand the audio modality are now in the README and docs algorithm tables, with a newpyod.models.audioAPI page (v3.6.0 shippedAudioAEwithout a table row).
Internal
- Regression tests for the DataFrame-warning fix (GMM / OCSVM / LOF) and a no-download EmbeddingOD resolver test using
SentenceTransformer(modules=[]). - PyPI download figure refreshed to 46M+.
- Reviewed via Codex gatekeeper review: #696 and #692 merged after dual review, with the flagged test gaps closed in a follow-up.
Full changelog: v3.6.0...v3.6.1