spotforecast2-safe 0.0.1__py3-none-any.whl → 0.0.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- spotforecast2_safe/preprocessing/__init__.py +1 -10
- spotforecast2_safe/preprocessing/outlier.py +4 -251
- spotforecast2_safe-0.0.3.dist-info/METADATA +107 -0
- {spotforecast2_safe-0.0.1.dist-info → spotforecast2_safe-0.0.3.dist-info}/RECORD +5 -19
- spotforecast2_safe/forecaster/metrics.py +0 -527
- spotforecast2_safe/model_selection/__init__.py +0 -5
- spotforecast2_safe/model_selection/bayesian_search.py +0 -453
- spotforecast2_safe/model_selection/grid_search.py +0 -314
- spotforecast2_safe/model_selection/random_search.py +0 -151
- spotforecast2_safe/model_selection/split_base.py +0 -357
- spotforecast2_safe/model_selection/split_one_step.py +0 -248
- spotforecast2_safe/model_selection/split_ts_cv.py +0 -687
- spotforecast2_safe/model_selection/utils_common.py +0 -718
- spotforecast2_safe/model_selection/utils_metrics.py +0 -103
- spotforecast2_safe/model_selection/validation.py +0 -685
- spotforecast2_safe/preprocessing/time_series_visualization.py +0 -815
- spotforecast2_safe/stats/__init__.py +0 -7
- spotforecast2_safe/stats/autocorrelation.py +0 -173
- spotforecast2_safe-0.0.1.dist-info/METADATA +0 -86
- {spotforecast2_safe-0.0.1.dist-info → spotforecast2_safe-0.0.3.dist-info}/WHEEL +0 -0
|
@@ -9,13 +9,8 @@ from .outlier import (
|
|
|
9
9
|
mark_outliers,
|
|
10
10
|
manual_outlier_removal,
|
|
11
11
|
get_outliers,
|
|
12
|
-
visualize_outliers_hist,
|
|
13
|
-
visualize_outliers_plotly_scatter,
|
|
14
|
-
)
|
|
15
|
-
from .time_series_visualization import (
|
|
16
|
-
visualize_ts_plotly,
|
|
17
|
-
visualize_ts_comparison,
|
|
18
12
|
)
|
|
13
|
+
|
|
19
14
|
from .imputation import custom_weights, get_missing_weights, WeightFunction
|
|
20
15
|
from .split import split_abs_train_val_test, split_rel_train_val_test
|
|
21
16
|
from ._differentiator import TimeSeriesDifferentiator
|
|
@@ -31,10 +26,6 @@ __all__ = [
|
|
|
31
26
|
"mark_outliers",
|
|
32
27
|
"manual_outlier_removal",
|
|
33
28
|
"get_outliers",
|
|
34
|
-
"visualize_outliers_hist",
|
|
35
|
-
"visualize_outliers_plotly_scatter",
|
|
36
|
-
"visualize_ts_plotly",
|
|
37
|
-
"visualize_ts_comparison",
|
|
38
29
|
"custom_weights",
|
|
39
30
|
"get_missing_weights",
|
|
40
31
|
"WeightFunction",
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
from typing import Optional, Dict
|
|
1
|
+
from typing import Optional, Dict
|
|
2
2
|
|
|
3
3
|
from sklearn.ensemble import IsolationForest
|
|
4
4
|
import numpy as np
|
|
5
5
|
import pandas as pd
|
|
6
|
-
import matplotlib.pyplot as plt
|
|
7
|
-
|
|
8
|
-
try:
|
|
9
|
-
import plotly.graph_objects as go
|
|
10
|
-
except ImportError:
|
|
11
|
-
go = None
|
|
12
6
|
|
|
13
7
|
|
|
14
8
|
def mark_outliers(
|
|
@@ -34,7 +28,7 @@ def mark_outliers(
|
|
|
34
28
|
|
|
35
29
|
Examples:
|
|
36
30
|
>>> from spotforecast2.data.fetch_data import fetch_data
|
|
37
|
-
>>> from
|
|
31
|
+
>>> from spotforecast2_safe.preprocessing.outlier import mark_outliers
|
|
38
32
|
>>> data = fetch_data()
|
|
39
33
|
>>> cleaned_data, outlier_labels = mark_outliers(data, contamination=0.1, random_state=42, verbose=True)
|
|
40
34
|
"""
|
|
@@ -81,7 +75,7 @@ def manual_outlier_removal(
|
|
|
81
75
|
|
|
82
76
|
Examples:
|
|
83
77
|
>>> from spotforecast2.data.fetch_data import fetch_data
|
|
84
|
-
>>> from
|
|
78
|
+
>>> from spotforecast2_safe.preprocessing.outlier import manual_outlier_removal
|
|
85
79
|
>>> data = fetch_data()
|
|
86
80
|
>>> data, n_manual_outliers = manual_outlier_removal(
|
|
87
81
|
... data,
|
|
@@ -154,7 +148,7 @@ def get_outliers(
|
|
|
154
148
|
Examples:
|
|
155
149
|
>>> import pandas as pd
|
|
156
150
|
>>> import numpy as np
|
|
157
|
-
>>> from
|
|
151
|
+
>>> from spotforecast2_safe.preprocessing.outlier import get_outliers
|
|
158
152
|
>>>
|
|
159
153
|
>>> # Create sample data with outliers
|
|
160
154
|
>>> np.random.seed(42)
|
|
@@ -192,244 +186,3 @@ def get_outliers(
|
|
|
192
186
|
outliers_dict[col] = data.loc[outlier_mask, col]
|
|
193
187
|
|
|
194
188
|
return outliers_dict
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
def visualize_outliers_hist(
|
|
198
|
-
data: pd.DataFrame,
|
|
199
|
-
data_original: pd.DataFrame,
|
|
200
|
-
columns: Optional[list[str]] = None,
|
|
201
|
-
contamination: float = 0.01,
|
|
202
|
-
random_state: int = 1234,
|
|
203
|
-
figsize: tuple[int, int] = (10, 5),
|
|
204
|
-
bins: int = 50,
|
|
205
|
-
**kwargs: Any,
|
|
206
|
-
) -> None:
|
|
207
|
-
"""Visualize outliers in DataFrame using stacked histograms.
|
|
208
|
-
|
|
209
|
-
Creates a histogram for each specified column, displaying both regular data
|
|
210
|
-
and detected outliers in different colors. Uses IsolationForest for outlier
|
|
211
|
-
detection.
|
|
212
|
-
|
|
213
|
-
Args:
|
|
214
|
-
data: The DataFrame with cleaned data (outliers may be NaN).
|
|
215
|
-
data_original: The original DataFrame before outlier detection.
|
|
216
|
-
columns: List of column names to visualize. If None, all columns are used.
|
|
217
|
-
Default: None.
|
|
218
|
-
contamination: The estimated proportion of outliers in the dataset.
|
|
219
|
-
Default: 0.01.
|
|
220
|
-
random_state: Random seed for reproducibility. Default: 1234.
|
|
221
|
-
figsize: Figure size as (width, height). Default: (10, 5).
|
|
222
|
-
bins: Number of histogram bins. Default: 50.
|
|
223
|
-
**kwargs: Additional keyword arguments passed to plt.hist() (e.g., color,
|
|
224
|
-
alpha, edgecolor, etc.).
|
|
225
|
-
|
|
226
|
-
Returns:
|
|
227
|
-
None. Displays matplotlib figures.
|
|
228
|
-
|
|
229
|
-
Raises:
|
|
230
|
-
ValueError: If data or data_original is empty, or if specified columns
|
|
231
|
-
don't exist.
|
|
232
|
-
ImportError: If matplotlib is not installed.
|
|
233
|
-
|
|
234
|
-
Examples:
|
|
235
|
-
>>> import pandas as pd
|
|
236
|
-
>>> import numpy as np
|
|
237
|
-
>>> from spotforecast2.preprocessing.outlier import visualize_outliers_hist
|
|
238
|
-
>>>
|
|
239
|
-
>>> # Create sample data
|
|
240
|
-
>>> np.random.seed(42)
|
|
241
|
-
>>> data_original = pd.DataFrame({
|
|
242
|
-
... 'temperature': np.concatenate([
|
|
243
|
-
... np.random.normal(20, 5, 100),
|
|
244
|
-
... [50, 60, 70] # outliers
|
|
245
|
-
... ]),
|
|
246
|
-
... 'humidity': np.concatenate([
|
|
247
|
-
... np.random.normal(60, 10, 100),
|
|
248
|
-
... [95, 98, 99] # outliers
|
|
249
|
-
... ])
|
|
250
|
-
... })
|
|
251
|
-
>>> data_cleaned = data_original.copy()
|
|
252
|
-
>>>
|
|
253
|
-
>>> # Visualize outliers
|
|
254
|
-
>>> visualize_outliers_hist(
|
|
255
|
-
... data_cleaned,
|
|
256
|
-
... data_original,
|
|
257
|
-
... contamination=0.03,
|
|
258
|
-
... figsize=(12, 5),
|
|
259
|
-
... alpha=0.7
|
|
260
|
-
... )
|
|
261
|
-
"""
|
|
262
|
-
if data.empty or data_original.empty:
|
|
263
|
-
raise ValueError("Input data is empty")
|
|
264
|
-
|
|
265
|
-
columns_to_plot = columns if columns is not None else data.columns
|
|
266
|
-
|
|
267
|
-
# Validate columns exist
|
|
268
|
-
missing_cols = set(columns_to_plot) - set(data.columns)
|
|
269
|
-
if missing_cols:
|
|
270
|
-
raise ValueError(f"Columns not found in data: {missing_cols}")
|
|
271
|
-
|
|
272
|
-
# Detect outliers
|
|
273
|
-
outliers = get_outliers(
|
|
274
|
-
data_original,
|
|
275
|
-
data_original=data_original,
|
|
276
|
-
contamination=contamination,
|
|
277
|
-
random_state=random_state,
|
|
278
|
-
)
|
|
279
|
-
|
|
280
|
-
for col in columns_to_plot:
|
|
281
|
-
# Get inliers (non-NaN values in cleaned data)
|
|
282
|
-
inliers = data[col].dropna()
|
|
283
|
-
|
|
284
|
-
# Get outlier values
|
|
285
|
-
outlier_vals = outliers[col]
|
|
286
|
-
|
|
287
|
-
# Calculate percentage
|
|
288
|
-
pct_outliers = (len(outlier_vals) / len(data_original)) * 100
|
|
289
|
-
|
|
290
|
-
# Create figure
|
|
291
|
-
plt.figure(figsize=figsize)
|
|
292
|
-
plt.hist(
|
|
293
|
-
[inliers, outlier_vals],
|
|
294
|
-
bins=bins,
|
|
295
|
-
stacked=True,
|
|
296
|
-
color=["lightgrey", "red"],
|
|
297
|
-
label=["Regular Data", "Outliers"],
|
|
298
|
-
**kwargs,
|
|
299
|
-
)
|
|
300
|
-
plt.grid(True, alpha=0.3)
|
|
301
|
-
plt.title(f"{col} Distribution with Outliers ({pct_outliers:.2f}%)")
|
|
302
|
-
plt.xlabel("Value")
|
|
303
|
-
plt.ylabel("Frequency")
|
|
304
|
-
plt.legend()
|
|
305
|
-
plt.tight_layout()
|
|
306
|
-
plt.show()
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
def visualize_outliers_plotly_scatter(
|
|
310
|
-
data: pd.DataFrame,
|
|
311
|
-
data_original: pd.DataFrame,
|
|
312
|
-
columns: Optional[list[str]] = None,
|
|
313
|
-
contamination: float = 0.01,
|
|
314
|
-
random_state: int = 1234,
|
|
315
|
-
**kwargs: Any,
|
|
316
|
-
) -> None:
|
|
317
|
-
"""Visualize outliers in time series using Plotly scatter plots.
|
|
318
|
-
|
|
319
|
-
Creates an interactive time series plot for each specified column, showing
|
|
320
|
-
regular data as a line and detected outliers as scatter points. Uses
|
|
321
|
-
IsolationForest for outlier detection.
|
|
322
|
-
|
|
323
|
-
Args:
|
|
324
|
-
data: The DataFrame with cleaned data (outliers may be NaN).
|
|
325
|
-
data_original: The original DataFrame before outlier detection.
|
|
326
|
-
columns: List of column names to visualize. If None, all columns are used.
|
|
327
|
-
Default: None.
|
|
328
|
-
contamination: The estimated proportion of outliers in the dataset.
|
|
329
|
-
Default: 0.01.
|
|
330
|
-
random_state: Random seed for reproducibility. Default: 1234.
|
|
331
|
-
**kwargs: Additional keyword arguments passed to go.Figure.update_layout()
|
|
332
|
-
(e.g., template, height, etc.).
|
|
333
|
-
|
|
334
|
-
Returns:
|
|
335
|
-
None. Displays Plotly figures.
|
|
336
|
-
|
|
337
|
-
Raises:
|
|
338
|
-
ValueError: If data or data_original is empty, or if specified columns
|
|
339
|
-
don't exist.
|
|
340
|
-
ImportError: If plotly is not installed.
|
|
341
|
-
|
|
342
|
-
Examples:
|
|
343
|
-
>>> import pandas as pd
|
|
344
|
-
>>> import numpy as np
|
|
345
|
-
>>> from spotforecast2.preprocessing.outlier import visualize_outliers_plotly_scatter
|
|
346
|
-
>>>
|
|
347
|
-
>>> # Create sample time series data
|
|
348
|
-
>>> np.random.seed(42)
|
|
349
|
-
>>> dates = pd.date_range('2024-01-01', periods=103, freq='h')
|
|
350
|
-
>>> data_original = pd.DataFrame({
|
|
351
|
-
... 'temperature': np.concatenate([
|
|
352
|
-
... np.random.normal(20, 5, 100),
|
|
353
|
-
... [50, 60, 70] # outliers
|
|
354
|
-
... ]),
|
|
355
|
-
... 'humidity': np.concatenate([
|
|
356
|
-
... np.random.normal(60, 10, 100),
|
|
357
|
-
... [95, 98, 99] # outliers
|
|
358
|
-
... ])
|
|
359
|
-
... }, index=dates)
|
|
360
|
-
>>> data_cleaned = data_original.copy()
|
|
361
|
-
>>>
|
|
362
|
-
>>> # Visualize outliers
|
|
363
|
-
>>> visualize_outliers_plotly_scatter(
|
|
364
|
-
... data_cleaned,
|
|
365
|
-
... data_original,
|
|
366
|
-
... contamination=0.03,
|
|
367
|
-
... template='plotly_white'
|
|
368
|
-
... )
|
|
369
|
-
"""
|
|
370
|
-
if go is None:
|
|
371
|
-
raise ImportError(
|
|
372
|
-
"plotly is required for this function. " "Install with: pip install plotly"
|
|
373
|
-
)
|
|
374
|
-
|
|
375
|
-
if data.empty or data_original.empty:
|
|
376
|
-
raise ValueError("Input data is empty")
|
|
377
|
-
|
|
378
|
-
columns_to_plot = columns if columns is not None else data.columns
|
|
379
|
-
|
|
380
|
-
# Validate columns exist
|
|
381
|
-
missing_cols = set(columns_to_plot) - set(data.columns)
|
|
382
|
-
if missing_cols:
|
|
383
|
-
raise ValueError(f"Columns not found in data: {missing_cols}")
|
|
384
|
-
|
|
385
|
-
# Detect outliers
|
|
386
|
-
outliers = get_outliers(
|
|
387
|
-
data_original,
|
|
388
|
-
data_original=data_original,
|
|
389
|
-
contamination=contamination,
|
|
390
|
-
random_state=random_state,
|
|
391
|
-
)
|
|
392
|
-
|
|
393
|
-
for col in columns_to_plot:
|
|
394
|
-
fig = go.Figure()
|
|
395
|
-
|
|
396
|
-
# Add regular data as line
|
|
397
|
-
fig.add_trace(
|
|
398
|
-
go.Scatter(
|
|
399
|
-
x=data.index,
|
|
400
|
-
y=data[col],
|
|
401
|
-
mode="lines",
|
|
402
|
-
name="Regular Data",
|
|
403
|
-
line=dict(color="lightgrey"),
|
|
404
|
-
)
|
|
405
|
-
)
|
|
406
|
-
|
|
407
|
-
# Add outliers as scatter points
|
|
408
|
-
outlier_vals = outliers[col]
|
|
409
|
-
if not outlier_vals.empty:
|
|
410
|
-
fig.add_trace(
|
|
411
|
-
go.Scatter(
|
|
412
|
-
x=outlier_vals.index,
|
|
413
|
-
y=outlier_vals,
|
|
414
|
-
mode="markers",
|
|
415
|
-
name="Outliers",
|
|
416
|
-
marker=dict(color="red", size=8, symbol="x"),
|
|
417
|
-
)
|
|
418
|
-
)
|
|
419
|
-
|
|
420
|
-
# Calculate percentage
|
|
421
|
-
pct_outliers = (len(outlier_vals) / len(data_original)) * 100
|
|
422
|
-
|
|
423
|
-
# Update layout with custom kwargs
|
|
424
|
-
layout_kwargs = {
|
|
425
|
-
"title": f"{col} Time Series with Outliers ({pct_outliers:.2f}%)",
|
|
426
|
-
"xaxis_title": "Time",
|
|
427
|
-
"yaxis_title": "Value",
|
|
428
|
-
"template": "plotly_white",
|
|
429
|
-
"legend": dict(
|
|
430
|
-
orientation="h", yanchor="bottom", y=1.02, xanchor="right", x=1
|
|
431
|
-
),
|
|
432
|
-
}
|
|
433
|
-
layout_kwargs.update(kwargs)
|
|
434
|
-
fig.update_layout(**layout_kwargs)
|
|
435
|
-
fig.show()
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: spotforecast2-safe
|
|
3
|
+
Version: 0.0.3
|
|
4
|
+
Summary: spotforecast2-safe (Core): Safety-critical time series forecasting for production
|
|
5
|
+
Author: bartzbeielstein
|
|
6
|
+
Author-email: bartzbeielstein <32470350+bartzbeielstein@users.noreply.github.com>
|
|
7
|
+
Requires-Dist: astral>=3.2
|
|
8
|
+
Requires-Dist: feature-engine>=1.9.3
|
|
9
|
+
Requires-Dist: flake8>=7.3.0
|
|
10
|
+
Requires-Dist: holidays>=0.90
|
|
11
|
+
Requires-Dist: lightgbm>=4.6.0
|
|
12
|
+
Requires-Dist: numba>=0.63.1
|
|
13
|
+
Requires-Dist: pandas>=3.0.0
|
|
14
|
+
Requires-Dist: pyarrow>=23.0.0
|
|
15
|
+
Requires-Dist: scikit-learn>=1.8.0
|
|
16
|
+
Requires-Dist: tqdm>=4.67.2
|
|
17
|
+
Requires-Dist: pytest>=9.0.2 ; extra == 'dev'
|
|
18
|
+
Requires-Dist: pytest-cov>=6.0.0 ; extra == 'dev'
|
|
19
|
+
Requires-Dist: black>=24.1.0 ; extra == 'dev'
|
|
20
|
+
Requires-Dist: isort>=5.13.0 ; extra == 'dev'
|
|
21
|
+
Requires-Dist: ruff>=0.3.0 ; extra == 'dev'
|
|
22
|
+
Requires-Dist: mkdocs>=1.6.1 ; extra == 'dev'
|
|
23
|
+
Requires-Dist: mkdocs-material>=9.7.1 ; extra == 'dev'
|
|
24
|
+
Requires-Dist: mkdocstrings>=1.0.2 ; extra == 'dev'
|
|
25
|
+
Requires-Dist: mkdocstrings-python>=2.0.1 ; extra == 'dev'
|
|
26
|
+
Requires-Dist: safety>=3.0.0 ; extra == 'dev'
|
|
27
|
+
Requires-Dist: bandit>=1.8.0 ; extra == 'dev'
|
|
28
|
+
Requires-Python: >=3.13
|
|
29
|
+
Project-URL: Documentation, https://sequential-parameter-optimization.github.io/spotforecast2-safe/
|
|
30
|
+
Project-URL: Repository, https://github.com/sequential-parameter-optimization/spotforecast2-safe
|
|
31
|
+
Project-URL: Issues, https://github.com/sequential-parameter-optimization/spotforecast2-safe/issues
|
|
32
|
+
Provides-Extra: dev
|
|
33
|
+
Description-Content-Type: text/markdown
|
|
34
|
+
|
|
35
|
+
<div align="left">
|
|
36
|
+
<img src="logo/spotlogo.png" alt="spotforecast2-safe Logo" width="300">
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
# spotforecast2-safe (Core)
|
|
40
|
+
|
|
41
|
+
[](https://www.python.org/downloads/)
|
|
42
|
+
[](MODEL_CARD.md)
|
|
43
|
+
[](pyproject.toml)
|
|
44
|
+
[](MODEL_CARD.md)
|
|
45
|
+
[](LICENSE)
|
|
46
|
+
|
|
47
|
+
**Testing & Quality**
|
|
48
|
+
|
|
49
|
+
[](https://github.com/sequential-parameter-optimization/spotforecast2-safe/actions/workflows/ci.yml)
|
|
50
|
+
[](https://sequential-parameter-optimization.github.io/spotforecast2-safe/)
|
|
51
|
+
[](MODEL_CARD.md)
|
|
52
|
+
|
|
53
|
+
**Status**
|
|
54
|
+
|
|
55
|
+
[](https://github.com/sequential-parameter-optimization/spotforecast2-safe)
|
|
56
|
+
[](https://github.com/psf/black)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
## Safety-Critical Design Goals
|
|
61
|
+
|
|
62
|
+
`spotforecast2-safe` is a specialized Python library designed to **facilitate** time series forecasting in safety-critical production environments and embedded systems.
|
|
63
|
+
|
|
64
|
+
Unlike standard machine and dep learning libraries, it follows a strict **"Safety-First"** architecture by design. **However, users must independently verify that these features meet their specific regulatory requirements:**
|
|
65
|
+
|
|
66
|
+
- **Zero Dead Code**: We aim to minimize the attack surface by excluding visualization and training logic.
|
|
67
|
+
- **Deterministic Logic**: The algorithms are designed to be purely mathematical and deterministic.
|
|
68
|
+
- **Fail-Safe Operation**: The system is designed to favor explicit errors over silent failures when encountering invalid data.
|
|
69
|
+
- **EU AI Act Support**: The architecture supports transparency and data governance, helping users build compliant high-risk AI components.
|
|
70
|
+
|
|
71
|
+
For a detailed technical overview of our safety mechanisms, see our **[MODEL_CARD.md](MODEL_CARD.md)**.
|
|
72
|
+
|
|
73
|
+
## ⚠️ Disclaimer & Liability
|
|
74
|
+
|
|
75
|
+
**IMPORTANT**: This software is provided "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed.
|
|
76
|
+
|
|
77
|
+
In no event shall the authors, copyright holders, or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.
|
|
78
|
+
|
|
79
|
+
**The use of this software in safety-critical systems is at the sole risk of the user.**
|
|
80
|
+
|
|
81
|
+
## Attributions
|
|
82
|
+
|
|
83
|
+
Parts of the code are ported from `skforecast` to reduce external dependencies.
|
|
84
|
+
Many thanks to the [skforecast team](https://skforecast.org/0.20.0/more/about-skforecast.html) for their great work!
|
|
85
|
+
|
|
86
|
+
## Documentation
|
|
87
|
+
|
|
88
|
+
Documentation (API) is available at: [https://sequential-parameter-optimization.github.io/spotforecast2-safe/](https://sequential-parameter-optimization.github.io/spotforecast2-safe/)
|
|
89
|
+
|
|
90
|
+
## License
|
|
91
|
+
|
|
92
|
+
`spotforecast2-safe` software: [BSD-3-Clause License](LICENSE)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
# References
|
|
96
|
+
|
|
97
|
+
## spotforecast2
|
|
98
|
+
|
|
99
|
+
The "full" version of `spotforecast2-safe`, which is named `spotforecast`, is available at: [https://sequential-parameter-optimization.github.io/spotforecast2/](https://sequential-parameter-optimization.github.io/spotforecast2/)
|
|
100
|
+
|
|
101
|
+
## skforecast
|
|
102
|
+
|
|
103
|
+
* Amat Rodrigo, J., & Escobar Ortiz, J. (2026). skforecast (Version 0.20.0) [Computer software]. https://doi.org/10.5281/zenodo.8382788
|
|
104
|
+
|
|
105
|
+
## spotoptim
|
|
106
|
+
|
|
107
|
+
* [spotoptim documentation](https://sequential-parameter-optimization.github.io/spotoptim/)
|
|
@@ -5,39 +5,25 @@ spotforecast2_safe/data/fetch_data.py,sha256=q2_f_GGjNWX2sb6aVlCKfOLShcdBTGkyx7r
|
|
|
5
5
|
spotforecast2_safe/exceptions.py,sha256=GaEIZMrdx0in3laIxwpB3KcFOovim6KznZt-oE4MfU8,20516
|
|
6
6
|
spotforecast2_safe/forecaster/__init__.py,sha256=BbCOS2ouKcPC9VzcdprllVyqlZIyAWXCOvUAiInxDi4,140
|
|
7
7
|
spotforecast2_safe/forecaster/base.py,sha256=_Asa5yCGz4zaMpqcjAuxPy9nnH4P387T24RnYM0dPc8,16755
|
|
8
|
-
spotforecast2_safe/forecaster/metrics.py,sha256=MiZs9MAvT5JjPEGEks1uWR0nFuzYucCWuu4bMV_4HPQ,19316
|
|
9
8
|
spotforecast2_safe/forecaster/recursive/__init__.py,sha256=YNVxLReLEwSFDasmjXXMSKJqNL_Y4lVEZ696UksjVVE,184
|
|
10
9
|
spotforecast2_safe/forecaster/recursive/_forecaster_equivalent_date.py,sha256=PEu9aCW0UT_gdA0PzGEMijXSQW1Yz1Af57ieRyyjYtI,48252
|
|
11
10
|
spotforecast2_safe/forecaster/recursive/_forecaster_recursive.py,sha256=uMVNqLTjGytVxq1jgUDhVbot9yvzqQvtucstKuIMAxY,44256
|
|
12
11
|
spotforecast2_safe/forecaster/recursive/_warnings.py,sha256=BtZ3UoycywjEQ0ceXe4TL1WEdFcLAi1EnDMvZXHw_U8,325
|
|
13
12
|
spotforecast2_safe/forecaster/utils.py,sha256=uc7jusIzhjVRTH-8kRip6BPiILr-nARUDWUwNaWtPws,38159
|
|
14
|
-
spotforecast2_safe/
|
|
15
|
-
spotforecast2_safe/model_selection/bayesian_search.py,sha256=94zYTFjlhG5FuMxeR4H1R_s5cAyTrYVYZPE1cBod4L8,17447
|
|
16
|
-
spotforecast2_safe/model_selection/grid_search.py,sha256=kK2cS6sZg3nUBEJEPtAkuqxO_AJrh2wwVuRIvMwywOo,11038
|
|
17
|
-
spotforecast2_safe/model_selection/random_search.py,sha256=ZaLZo7ibOZUC40JB8ycgLQv3rGWoiSOx3K-FFr1eGUk,6282
|
|
18
|
-
spotforecast2_safe/model_selection/split_base.py,sha256=zpIl8CnWhM526GkIT2XlSJ5cQQZTjt2F-E97ycK0sT4,15002
|
|
19
|
-
spotforecast2_safe/model_selection/split_one_step.py,sha256=tc3oOkbXxLUXd3mwjo2NVVW3PgbOR7slSQnRxinxAsc,9412
|
|
20
|
-
spotforecast2_safe/model_selection/split_ts_cv.py,sha256=pV0eCqTLipC7aBezAvz15zuAJ8dNAPXT0VwpYGKF3_s,29977
|
|
21
|
-
spotforecast2_safe/model_selection/utils_common.py,sha256=AujMGU4G3nncQ8Ym_eXPu6IbXCcYq3vgitAEWaRS4kE,31819
|
|
22
|
-
spotforecast2_safe/model_selection/utils_metrics.py,sha256=mMVKh03-yAvRjEnZlbg3CsktXNcHo7yiTkI5VMg5wQk,3842
|
|
23
|
-
spotforecast2_safe/model_selection/validation.py,sha256=9IU76Hymh6WPqcEunZwOIvYF72LJ-D5HFHfX8GWaht4,30063
|
|
24
|
-
spotforecast2_safe/preprocessing/__init__.py,sha256=UkwleNM-ue_YbaCLcYywW-qLqd8SFJ08-qKuv4tbaDs,1212
|
|
13
|
+
spotforecast2_safe/preprocessing/__init__.py,sha256=xbRMD0zEr3hhxfXD-7sOjtdJDdG6LWeOe6-pumkPCU0,918
|
|
25
14
|
spotforecast2_safe/preprocessing/_binner.py,sha256=2bWGMh_Ytyphxb_5j2VlIT8w3tx24GZs_g53o0Nb390,13848
|
|
26
15
|
spotforecast2_safe/preprocessing/_common.py,sha256=aP8EIYIg3iBXnijXByHedGEdcubXu-ciRtEgqdDfO_8,3141
|
|
27
16
|
spotforecast2_safe/preprocessing/_differentiator.py,sha256=otka_TO1edM3zgp16zOjeSKxa61arbmPPsr96_GfgLI,4646
|
|
28
17
|
spotforecast2_safe/preprocessing/_rolling.py,sha256=eYBOH2QRDbue8MYtitcOFLQS0PMdNi6v9I0nu07XexY,9057
|
|
29
18
|
spotforecast2_safe/preprocessing/curate_data.py,sha256=4VV8aYwShyrUc9lqWVx_ckIH-moK0B8ONEMb2i463ag,9603
|
|
30
19
|
spotforecast2_safe/preprocessing/imputation.py,sha256=wXHXcIwWb7_XqW9JdBjaRA7NxWhbKWoQyW5z0KkPLd8,5201
|
|
31
|
-
spotforecast2_safe/preprocessing/outlier.py,sha256=
|
|
20
|
+
spotforecast2_safe/preprocessing/outlier.py,sha256=APgflr1ZMvwYLTu83qRBX-iY7sFzcRAZcgAc5zrY0zo,7011
|
|
32
21
|
spotforecast2_safe/preprocessing/split.py,sha256=mzzt5ltUZdVzfWtBBTQjp8E2MyqVdWUFtz7nN11urbU,5011
|
|
33
|
-
spotforecast2_safe/preprocessing/time_series_visualization.py,sha256=KBneOjJVE_uajm5v-28GdYhf6vkMCBUreGfl1GQlJAA,27706
|
|
34
22
|
spotforecast2_safe/processing/__init__.py,sha256=IJ5jTWRvI7V6MCtFpKL1j7tY9VUXwqPiDtfghmfI6Lg,294
|
|
35
23
|
spotforecast2_safe/processing/agg_predict.py,sha256=4iFGm5leCefnBROcBCfwNrOZ7qFC43NIXZ9TxH6QhrA,2471
|
|
36
24
|
spotforecast2_safe/processing/n2n_predict.py,sha256=S4TjuAaKZWjHg9thxVSPr0wneZYeAEJ4jiCoiJ-3d_U,15369
|
|
37
25
|
spotforecast2_safe/processing/n2n_predict_with_covariates.py,sha256=IDoEMOAOOacagJRbNJb1ki64bozNJBprUP9PQyGGe_E,41379
|
|
38
26
|
spotforecast2_safe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
|
-
spotforecast2_safe/stats/__init__.py,sha256=9KVh7ZQD_48AJ0bTNQyYWMT2mBaOrX26W-iA3r-IppE,166
|
|
40
|
-
spotforecast2_safe/stats/autocorrelation.py,sha256=5T-GydM5EfBaLU1iM7F8A9bdc__u_0I9zEonQpT-dos,6854
|
|
41
27
|
spotforecast2_safe/utils/__init__.py,sha256=BSzSzgm10C3h_0qQKSlEtTBtzHD-qjbG9L599Ulx_9c,1043
|
|
42
28
|
spotforecast2_safe/utils/convert_to_utc.py,sha256=hz8mJUHK9jDLUiN5LdNX5l3KZuOKlklyycB4zFdB9Ng,1405
|
|
43
29
|
spotforecast2_safe/utils/data_transform.py,sha256=PhLeZoimM0TLfp34Fp56dQrxlCYNWGVU8h8RZHdZSlo,7294
|
|
@@ -46,6 +32,6 @@ spotforecast2_safe/utils/generate_holiday.py,sha256=SHaPvPMt-abis95cChHf5ObyPwCT
|
|
|
46
32
|
spotforecast2_safe/utils/validation.py,sha256=YfFn4OW-SJeJDioY0opkhY9ISGnZ075KIXdfxlSKlyw,21623
|
|
47
33
|
spotforecast2_safe/weather/__init__.py,sha256=1Jco88pl0deNESgNATin83Nf5i9c58pxN7G-vNiOiu0,120
|
|
48
34
|
spotforecast2_safe/weather/weather_client.py,sha256=Ec_ywug6uoa71MfXM8RNbXEvtBtBzr-SUS5xq_HKtZE,9837
|
|
49
|
-
spotforecast2_safe-0.0.
|
|
50
|
-
spotforecast2_safe-0.0.
|
|
51
|
-
spotforecast2_safe-0.0.
|
|
35
|
+
spotforecast2_safe-0.0.3.dist-info/WHEEL,sha256=iHtWm8nRfs0VRdCYVXocAWFW8ppjHL-uTJkAdZJKOBM,80
|
|
36
|
+
spotforecast2_safe-0.0.3.dist-info/METADATA,sha256=ExYL6CV2pKVARM-v8tsJiGXk47FJ04EokSlni3UmOLo,5779
|
|
37
|
+
spotforecast2_safe-0.0.3.dist-info/RECORD,,
|