Skip to content

earthai-tech/hwm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

36 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

HWM: Adaptive Hammerstein-Wiener Modeling Toolkit

License
PyPI version
Documentation Status Anaconda-Server Badge

HWM is a Python toolkit for adaptive dynamic system modeling, designed to capture complex nonlinear and linear relationships in data through the Hammerstein-Wiener architecture. With a flexible, modular design, HWM integrates seamlessly with Scikit-learn, enabling streamlined workflows for regression, classification, and time-series forecasting tasks.

πŸš€ Key Features

  • Adaptive Hammerstein-Wiener Models: Supports both regression and classification with customizable nonlinear and dynamic components.
  • Time-Series and Dynamic System Modeling: Tools for handling sequence-based and time-dependent data.
  • Scikit-Learn Compatible API: Designed to integrate easily with Scikit-learn workflows.
  • Flexible Metrics and Utilities: Custom metrics like prediction_stability_score and twa_score for model evaluation, along with data handling utilities.

πŸ“¦ Installation

HWM requires Python 3.9 or later. Install it from PyPI using pip:

pip install hwm

or from Anaconda using conda:

conda install conda-forge::hwm

For detailed installation instructions, refer to the Installation Guide.

🏁 Getting Started

πŸ” Example: Classification with Hammerstein-Wiener Model

import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from hwm.estimators import HWClassifier
from hwm.metrics import prediction_stability_score

# Generate synthetic data
X, y = make_classification(n_samples=10000, n_features=20)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# Initialize the model
hw_model = HWClassifier(
    nonlinear_input_estimator=StandardScaler(),
    nonlinear_output_estimator=StandardScaler(),
    p=2,
    loss="cross_entropy", 
    max_iter =10 
)

# Train and evaluate
hw_model.fit(X_train, y_train)
y_pred = hw_model.predict(X_test)
stability_score = prediction_stability_score(y_pred)

print(f"\nPrediction Stability Score: {stability_score:.4f}")

For more usage examples, see the Examples Page.

πŸ“– Documentation

Comprehensive documentation is available on Read the Docs. Key sections include:

πŸ”— Project Links

🀝 Contributing

We welcome contributions! Please submit issues or pull requests via our GitHub repository. For major changes, discuss your ideas in the issues section first to align with project goals.

πŸ‘¨β€πŸ’Ό Maintainers

πŸ“ License

HWM is licensed under the BSD-3-Clause license. See the LICENSE file for details.

🏷️ Keywords

machine learning, dynamic systems, regression,
classification, time-series, Scikit-learn compatible


For additional resources, visit the User Guide and explore our rich tools for dynamic system modeling and time-series analysis. A practical example of network intrusion detection is the use of KDD Cup 1999 dataset.

Packages

 
 
 

Contributors

Languages