- Add Prometheus, Grafana, and Loki monitoring stack - Include pre-configured dashboards for ML metrics and logs - Add Podman container support with security policies - Implement ML runtime environments for multiple frameworks - Add containerized ML project templates (PyTorch, TensorFlow, etc.) - Include secure runner with isolation and resource limits - Add comprehensive log aggregation and alerting
75 lines
2 KiB
Python
Executable file
75 lines
2 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
import argparse
|
|
import json
|
|
import logging
|
|
from pathlib import Path
|
|
import time
|
|
|
|
import numpy as np
|
|
import pandas as pd
|
|
import statsmodels.api as sm
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--output_dir", type=str, required=True)
|
|
args = parser.parse_args()
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
logger.info("Training statsmodels linear regression...")
|
|
|
|
# Generate synthetic data
|
|
np.random.seed(42)
|
|
n_samples = 1000
|
|
n_features = 5
|
|
|
|
X = np.random.randn(n_samples, n_features)
|
|
# True coefficients
|
|
true_coef = np.array([1.5, -2.0, 0.5, 3.0, -1.0])
|
|
noise = np.random.randn(n_samples) * 0.1
|
|
y = X @ true_coef + noise
|
|
|
|
# Create DataFrame
|
|
feature_names = [f"feature_{i}" for i in range(n_features)]
|
|
X_df = pd.DataFrame(X, columns=feature_names)
|
|
y_series = pd.Series(y, name="target")
|
|
|
|
# Add constant for intercept
|
|
X_with_const = sm.add_constant(X_df)
|
|
|
|
# Fit model
|
|
model = sm.OLS(y_series, X_with_const).fit()
|
|
|
|
logger.info(f"Model fitted successfully. R-squared: {model.rsquared:.4f}")
|
|
|
|
# Save results
|
|
results = {
|
|
"model_type": "LinearRegression",
|
|
"n_samples": n_samples,
|
|
"n_features": n_features,
|
|
"r_squared": float(model.rsquared),
|
|
"adj_r_squared": float(model.rsquared_adj),
|
|
"f_statistic": float(model.fvalue),
|
|
"f_pvalue": float(model.f_pvalue),
|
|
"coefficients": model.params.to_dict(),
|
|
"standard_errors": model.bse.to_dict(),
|
|
"p_values": model.pvalues.to_dict(),
|
|
}
|
|
|
|
output_dir = Path(args.output_dir)
|
|
output_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
with open(output_dir / "results.json", "w") as f:
|
|
json.dump(results, f, indent=2)
|
|
|
|
# Save model summary
|
|
with open(output_dir / "model_summary.txt", "w") as f:
|
|
f.write(str(model.summary()))
|
|
|
|
logger.info("Results and model summary saved successfully!")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|