spforge 0.8.8__tar.gz → 0.8.9__tar.gz
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.
Potentially problematic release.
This version of spforge might be problematic. Click here for more details.
- {spforge-0.8.8/spforge.egg-info → spforge-0.8.9}/PKG-INFO +1 -1
- {spforge-0.8.8 → spforge-0.8.9}/pyproject.toml +1 -1
- {spforge-0.8.8 → spforge-0.8.9}/spforge/performance_transformers/_performance_manager.py +2 -4
- {spforge-0.8.8 → spforge-0.8.9/spforge.egg-info}/PKG-INFO +1 -1
- {spforge-0.8.8 → spforge-0.8.9}/tests/performance_transformers/test_performance_manager.py +15 -0
- {spforge-0.8.8 → spforge-0.8.9}/LICENSE +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/MANIFEST.in +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/README.md +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/game_level_example.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/lol/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/lol/data/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/lol/data/subsample_lol_data.parquet +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/lol/data/utils.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/lol/pipeline_transformer_example.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/nba/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/nba/cross_validation_example.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/nba/data/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/nba/data/game_player_subsample.parquet +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/nba/data/utils.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/nba/feature_engineering_example.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/nba/game_winner_example.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/examples/nba/predictor_transformers_example.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/setup.cfg +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/autopipeline.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/base_feature_generator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/cross_validator/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/cross_validator/_base.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/cross_validator/cross_validator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/data_structures.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/distributions/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/distributions/_negative_binomial_estimator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/distributions/_normal_distribution_predictor.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/distributions/_student_t_distribution_estimator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/estimator/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/estimator/_conditional_estimator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/estimator/_frequency_bucketing_classifier.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/estimator/_granularity_estimator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/estimator/_group_by_estimator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/estimator/_ordinal_classifier.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/estimator/_sklearn_enhancer_estimator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/feature_generator/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/feature_generator/_base.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/feature_generator/_lag.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/feature_generator/_net_over_predicted.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/feature_generator/_regressor_feature_generator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/feature_generator/_rolling_against_opponent.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/feature_generator/_rolling_mean_binary.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/feature_generator/_rolling_mean_days.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/feature_generator/_rolling_window.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/feature_generator/_utils.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/features_generator_pipeline.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/hyperparameter_tuning/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/hyperparameter_tuning/_default_search_spaces.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/hyperparameter_tuning/_tuner.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/performance_transformers/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/performance_transformers/_performances_transformers.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/ratings/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/ratings/_base.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/ratings/_player_rating.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/ratings/_team_rating.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/ratings/enums.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/ratings/league_identifier.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/ratings/league_start_rating_optimizer.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/ratings/player_performance_predictor.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/ratings/start_rating_generator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/ratings/team_performance_predictor.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/ratings/team_start_rating_generator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/ratings/utils.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/scorer/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/scorer/_score.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/transformers/__init__.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/transformers/_base.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/transformers/_net_over_predicted.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/transformers/_operator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/transformers/_other_transformer.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/transformers/_predictor.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/transformers/_simple_transformer.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/transformers/_team_ratio_predictor.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge/utils.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge.egg-info/SOURCES.txt +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge.egg-info/dependency_links.txt +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge.egg-info/requires.txt +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/spforge.egg-info/top_level.txt +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/cross_validator/test_cross_validator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/distributions/test_distribution.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/end_to_end/test_estimator_hyperparameter_tuning.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/end_to_end/test_league_start_rating_optimizer.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/end_to_end/test_lol_player_kills.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/end_to_end/test_nba_player_points.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/end_to_end/test_nba_player_ratings_hyperparameter_tuning.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/end_to_end/test_nba_prediction_consistency.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/estimator/test_sklearn_estimator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/feature_generator/test_lag.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/feature_generator/test_regressor_feature_generator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/feature_generator/test_rolling_against_opponent.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/feature_generator/test_rolling_mean_binary.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/feature_generator/test_rolling_mean_days.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/feature_generator/test_rolling_window.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/hyperparameter_tuning/test_estimator_tuner.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/hyperparameter_tuning/test_rating_tuner.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/performance_transformers/test_performances_transformers.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/ratings/test_player_rating_generator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/ratings/test_ratings_property.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/ratings/test_team_rating_generator.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/scorer/test_score.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/scorer/test_score_aggregation_granularity.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/test_autopipeline.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/test_autopipeline_context.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/test_feature_generator_pipeline.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/transformers/test_estimator_transformer_context.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/transformers/test_net_over_predicted.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/transformers/test_other_transformer.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/transformers/test_predictor_transformer.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/transformers/test_simple_transformer.py +0 -0
- {spforge-0.8.8 → spforge-0.8.9}/tests/transformers/test_team_ratio_predictor.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: spforge
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.9
|
|
4
4
|
Summary: A flexible framework for generating features, ratings, and building machine learning or other models for training and inference on sports data.
|
|
5
5
|
Author-email: Mathias Holmstrøm <mathiasholmstom@gmail.com>
|
|
6
6
|
License: See LICENSE file
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "spforge"
|
|
7
|
-
version = "0.8.
|
|
7
|
+
version = "0.8.9"
|
|
8
8
|
description = "A flexible framework for generating features, ratings, and building machine learning or other models for training and inference on sports data."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -250,8 +250,6 @@ class PerformanceWeightsManager(PerformanceManager):
|
|
|
250
250
|
)
|
|
251
251
|
)
|
|
252
252
|
|
|
253
|
-
sum_weight = sum([w.weight for w in self.weights])
|
|
254
|
-
|
|
255
253
|
for column_weight in self.weights:
|
|
256
254
|
weight_col = f"weight__{column_weight.name}"
|
|
257
255
|
feature_col = column_weight.name
|
|
@@ -261,14 +259,14 @@ class PerformanceWeightsManager(PerformanceManager):
|
|
|
261
259
|
df = df.with_columns(
|
|
262
260
|
(
|
|
263
261
|
nw.col(tmp_out_performance_colum_name)
|
|
264
|
-
+ (nw.col(weight_col)
|
|
262
|
+
+ (nw.col(weight_col) * (1 - nw.col(feature_name)))
|
|
265
263
|
).alias(tmp_out_performance_colum_name)
|
|
266
264
|
)
|
|
267
265
|
else:
|
|
268
266
|
df = df.with_columns(
|
|
269
267
|
(
|
|
270
268
|
nw.col(tmp_out_performance_colum_name)
|
|
271
|
-
+ (nw.col(weight_col)
|
|
269
|
+
+ (nw.col(weight_col) * nw.col(feature_name))
|
|
272
270
|
).alias(tmp_out_performance_colum_name)
|
|
273
271
|
)
|
|
274
272
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: spforge
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.9
|
|
4
4
|
Summary: A flexible framework for generating features, ratings, and building machine learning or other models for training and inference on sports data.
|
|
5
5
|
Author-email: Mathias Holmstrøm <mathiasholmstom@gmail.com>
|
|
6
6
|
License: See LICENSE file
|
|
@@ -56,6 +56,21 @@ def test_performance_weights_manager_basic_flow(sample_data):
|
|
|
56
56
|
assert output_df["weighted_performance"].iloc[0] == pytest.approx(0.6)
|
|
57
57
|
|
|
58
58
|
|
|
59
|
+
def test_performance_weights_manager_keeps_mean_when_weights_not_normalized():
|
|
60
|
+
df = pd.DataFrame(
|
|
61
|
+
{
|
|
62
|
+
"feat_a": [0.0, 1.0, 2.0, 3.0],
|
|
63
|
+
"feat_b": [3.0, 2.0, 1.0, 0.0],
|
|
64
|
+
}
|
|
65
|
+
)
|
|
66
|
+
weights = [ColumnWeight(name="feat_a", weight=0.9), ColumnWeight(name="feat_b", weight=0.5)]
|
|
67
|
+
|
|
68
|
+
manager = PerformanceWeightsManager(weights=weights, transformer_names=["min_max"], prefix="")
|
|
69
|
+
output_df = nw.from_native(manager.fit_transform(df)).to_pandas()
|
|
70
|
+
|
|
71
|
+
assert output_df["weighted_performance"].mean() == pytest.approx(0.5, abs=1e-6)
|
|
72
|
+
|
|
73
|
+
|
|
59
74
|
def test_lower_is_better_logic():
|
|
60
75
|
df = pd.DataFrame({"feat_a": [1.0, 0.0]})
|
|
61
76
|
weights = [ColumnWeight(name="feat_a", weight=1.0, lower_is_better=True)]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spforge-0.8.8 → spforge-0.8.9}/spforge/performance_transformers/_performances_transformers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spforge-0.8.8 → spforge-0.8.9}/tests/end_to_end/test_nba_player_ratings_hyperparameter_tuning.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spforge-0.8.8 → spforge-0.8.9}/tests/performance_transformers/test_performances_transformers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|