コード例 #1
0
 def test_fit_target_to_feature_dict_working(self, data, X_y, estimator):
     X, y = X_y
     X_train, y_train, X_test, y_test = FeatureSplitter().transform(X, y)
     target_to_feature_dict = data.draw(
         str_target_to_feature_dicts(targets=y.columns, features=X.columns)
     )
     multi_feature_gar = MultiFeatureGAR(estimator)
     multi_feature_gar.fit(X_train, y_train, target_to_features_dict=target_to_feature_dict)
コード例 #2
0
 def test_predict_has_explainers(self, forecaster, explainer, X_y):
     X, y = X_y
     X_train, y_train, X_test, y_test = FeatureSplitter().transform(X, y)
     model = forecaster(LinearRegression(), explainer_type=explainer)
     model.fit(X_train, y_train)
     model.predict(X_test.iloc[:1, :])
     assert len(model.estimators_) == y_test.shape[1]
     for estimator in model.estimators_:
         assert len(estimator.explainer_.explanations_) == 1
コード例 #3
0
    def test_explanations_columns(self, forecaster, explainer, X_y):
        X, y = X_y
        X_train, y_train, X_test, y_test = FeatureSplitter().transform(X, y)
        model = forecaster(LinearRegression(), explainer_type=explainer)
        model.fit(X_train, y_train)
        model.predict(X_test.iloc[:1, :])
        for target_column, explanation in model.explanations_.items():
            assert set(explanation.columns).issuperset(set(X_train.columns))

        assert set(model.explanations_.keys()) == set(y_train.columns)
コード例 #4
0
 def test_predict_target_to_feature_dict_explainable(
         self, data, X_y, estimator):
     X, y = X_y
     X_train, y_train, X_test, y_test = FeatureSplitter().transform(X, y)
     target_to_feature_dict = data.draw(
         str_target_to_feature_dicts(targets=y.columns, features=X.columns))
     multi_feature_gar = MultiFeatureGAR(estimator, explainer_type="shap")
     multi_feature_gar.target_to_features_dict = target_to_feature_dict
     multi_feature_gar.fit(X_train, y_train)
     multi_feature_gar.predict(X_test)
コード例 #5
0
 def test_fit_target_to_feature_dict_consistent(self, data, X_y, estimator):
     X, y = X_y
     X_train, y_train, X_test, y_test = FeatureSplitter().transform(X, y)
     target_to_feature_dict = data.draw(
         str_target_to_feature_dicts(targets=y.columns, features=X.columns)
     )
     multi_feature_gar = MultiFeatureGAR(estimator)
     multi_feature_gar.fit(X_train, y_train, target_to_features_dict=target_to_feature_dict)
     for i, estimator_ in enumerate(multi_feature_gar.estimators_):
         expected_n_features = len(target_to_feature_dict[y.columns[i]])
         assert len(estimator_.coef_) == expected_n_features
コード例 #6
0
 def test_error_predict_target_to_feature_dict_wrong_X_shape(
         self, data, X_y, estimator):
     X, y = X_y
     X_train, y_train, X_test, y_test = FeatureSplitter().transform(X, y)
     target_to_feature_dict = data.draw(
         str_target_to_feature_dicts(targets=y.columns, features=X.columns))
     multi_feature_gar = MultiFeatureGAR(
         estimator, target_to_features_dict=target_to_feature_dict)
     multi_feature_gar.fit(X_train, y_train)
     X_test = X_test.iloc[:, :2]
     with pytest.raises(ValueError):
         multi_feature_gar.predict(X_test)
コード例 #7
0
def forecast_input(draw, max_lenth):
    length = draw(st.integers(min_value=2, max_value=max_lenth))
    horizon = draw(st.integers(min_value=1, max_value=length - 1))
    X = draw(
        giotto_time_series(
            min_length=length,
            max_length=max_lenth,
            allow_nan=False,
            allow_infinity=False,
        ))
    y = horizon_shift(X, horizon=horizon)
    X_train, y_train, X_test, y_test = FeatureSplitter().transform(X, y)
    return X_train, y_train, X_test
コード例 #8
0
    def test_correct_fit_date(self, X_y):
        base_model = LinearRegression()
        feature_splitter = FeatureSplitter()
        x, y = X_y[0], X_y[1]
        x_train, y_train, x_test, y_test = feature_splitter.transform(x, y)

        gar_no_feedforward = GAR(estimator=base_model)

        gar_no_feedforward.fit(x_train, y_train)

        predictions = gar_no_feedforward.predict(x_test)

        assert len(predictions) == len(x_test)
        np.testing.assert_array_equal(predictions.index, x_test.index)

        gar_with_feedforward = GARFF(estimator=base_model)

        gar_with_feedforward.fit(x_train, y_train)

        predictions = gar_with_feedforward.predict(x_test)

        assert len(predictions) == len(x_test)
        np.testing.assert_array_equal(predictions.index, x_test.index)
コード例 #9
0
    def test_fit_as_multi_output_regressor_if_target_to_feature_none(
        self, estimator, X_y
    ):
        X, y = X_y
        X_train, y_train, X_test, y_test = FeatureSplitter().transform(X, y)
        multi_feature_gar = MultiFeatureGAR(estimator)
        multi_feature_gar.fit(X_train, y_train)

        gar = GAR(estimator)
        gar.fit(X_train, y_train)

        pd.testing.assert_frame_equal(
            multi_feature_gar.predict(X_test), gar.predict(X_test),
        )
コード例 #10
0
ファイル: base.py プロジェクト: yikuide/giotto-time
 def _split_train_test(self, X: pd.DataFrame, y: pd.DataFrame):
     feature_splitter = FeatureSplitter()
     return feature_splitter.transform(X, y)
コード例 #11
0
 def _split_train_test(self, X, y):
     feature_splitter = FeatureSplitter()
     return feature_splitter.transform(X, y)