Skip to content

earthai-tech/hwm

Repository files navigation

HWM: Adaptive Hammerstein-Wiener Modeling Toolkit

License
PyPI version
Documentation Status

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

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.