def test_pipe_classification(): # no context data, single time series X = [np.random.rand(1000, 10)] y = [5] pipe = Pype([('seg', SegmentX()), ('ftr', FeatureRep()), ('rf', RandomForestClassifier(n_estimators=10))]) pipe.fit(X, y) pipe.predict(X) pipe.transform_predict(X, y) pipe.predict_proba(X) pipe.predict_log_proba(X) pipe.score(X, y) # context data, single time seres Xt = [np.random.rand(1000, 10)] Xc = [np.random.rand(3)] X = TS_Data(Xt, Xc) y = [5] pipe.fit(X, y) pipe.transform_predict(X, y) pipe.predict(X) pipe.score(X, y) # multiple time series Xt = [ np.random.rand(1000, 10), np.random.rand(100, 10), np.random.rand(500, 10) ] Xc = np.random.rand(3, 3) X = TS_Data(Xt, Xc) y = [1, 2, 3] pipe.fit(X, y) pipe.transform_predict(X, y) pipe.predict(X) pipe.score(X, y) # univariate data Xt = [np.random.rand(1000), np.random.rand(100), np.random.rand(500)] Xc = np.random.rand(3) X = TS_Data(Xt, Xc) y = [1, 2, 3] pipe.fit(X, y) pipe.transform_predict(X, y) pipe.predict(X) pipe.score(X, y) # transform pipe pipe = Pype([('seg', SegmentX()), ('ftr', FeatureRep()), ('scaler', StandardScaler())]) Xt = [ np.random.rand(1000, 10), np.random.rand(100, 10), np.random.rand(500, 10) ] Xc = np.random.rand(3, 3) X = TS_Data(Xt, Xc) y = [1, 2, 3] pipe.fit(X, y) pipe.transform(X, y) pipe.fit_transform(X, y)
kf = KFold(n_splits=5, random_state=42, shuffle=True) model_v1_list = [] score_v1_list = [] for train_index, test_index in kf.split(X_train): model_v1 = Pype([('segment', SegmentX(width=10)), ('features', FeatureRep()), ('scaler', StandardScaler()), ('rf', RandomForestClassifier(n_estimators=100, random_state=42))]) model_v1.fit(np.array(X_train)[train_index], y_train[train_index]) model_v1_list.append(model_v1) y_pred = [] for test_sample in np.array(X_train)[test_index]: result = model_v1.predict_proba([test_sample]) pred = np.argmax(np.sum(result, axis=0) / result.shape[0]) y_pred.append(pred) score_v1_list.append(f1_score(y_train[test_index], y_pred, average='macro')) print(score_v1_list) print(np.mean(score_v1_list), np.std(score_v1_list)) result_list = [] for model in model_v1_list: result = [] for test_sample in X_test: sample_result = model_v1.predict_proba([test_sample]) proba = np.sum(sample_result, axis=0) / sample_result.shape[0] result.append(proba) result_list.append(result)