def test_transform_default(self): n_sessions = 3 features = pn.featurize(self.equity_data, n_sessions) transformed = pn.data.transform(features) norms = np.linalg.norm(np.float64(transformed.values), axis=1) for i in range(len(norms)): self.assertAlmostEqual(norms[i], 1.0)
def test_transform_rows_vector(self): n_sessions = 3 norm = 3.14159 features = pn.featurize(self.equity_data, n_sessions) transformed = pn.data.transform(features, method="vector", norm=norm) norms = np.linalg.norm(np.float64(transformed.values), axis=1) for i in range(len(norms)): self.assertAlmostEqual(norms[i], norm)
def test_featurize_selection(self): n_sessions = 4 features = pn.featurize(self.equity_data, n_sessions, selection='Volume') self.assertEqual(len(features.index), len(self.equity_data.index) - n_sessions + 1) self.assertEqual(len(features.columns), n_sessions)
def test_transform_rows_mean(self): n_sessions = 3 norm = 10.0 features = pn.featurize(self.equity_data, n_sessions) transformed = pn.data.transform(features, method="mean", norm=norm, axis=0) means = transformed.mean(axis=1) for i in range(len(means)): self.assertAlmostEqual(means.iloc[i], norm)
def test_featurize_columns(self): cols = ['one', 'two', 'three'] n_sessions = len(cols) features = pn.featurize(self.equity_data, n_sessions, columns=cols) self.assertEqual(len(features.index), len(self.equity_data.index) - n_sessions + 1) self.assertEqual(len(features.columns), n_sessions) for i in range(len(cols)): self.assertEqual(cols[i], features.columns.values[i])
def test_transform_rows_last(self): n_sessions = 3 features = pn.featurize(self.equity_data, n_sessions) labels = pd.DataFrame(features.iloc[:, -1] * 0.5, index=features.index) transformed_features, transformed_labels = pn.data.transform(features, method="last", labels=labels) for i in range(len(transformed_features.index)): self.assertAlmostEqual(transformed_features.iloc[i, -1], 1.0) for i in range(len(transformed_labels.index)): self.assertAlmostEqual(transformed_labels.iloc[i, 0], 0.5)
def test_transform_rows_last(self): n_sessions = 3 features = pn.featurize(self.equity_data, n_sessions) labels = pd.DataFrame(features.iloc[:, -1] * 0.5, index=features.index) transformed_features, transformed_labels = pn.data.transform( features, method="last", labels=labels) for i in range(len(transformed_features.index)): self.assertAlmostEqual(transformed_features.iloc[i, -1], 1.0) for i in range(len(transformed_labels.index)): self.assertAlmostEqual(transformed_labels.iloc[i, 0], 0.5)
def test_add_const_df(self): n_sessions = 3 features = pn.featurize(self.equity_data, n_sessions) x = pn.data.feat.add_const(features) self.assertTrue(isinstance(x, pd.DataFrame)) self.assertFalse(isinstance(x, np.ndarray)) self.assertEqual(len(x.index), len(features.index)) self.assertEqual(len(x.columns), len(features.columns) + 1) for i in range(len(x.index)): self.assertAlmostEqual(x.iloc[i, 0], 1.0) for j in range(len(features.columns)): self.assertAlmostEqual(x.iloc[i, j + 1], features.iloc[i, j])
def test_add_const_ndarray(self): n_sessions = 3 features = pn.featurize(self.equity_data, n_sessions).values x = pn.data.feat.add_const(features) self.assertTrue(isinstance(x, np.ndarray)) self.assertFalse(isinstance(x, pd.DataFrame)) self.assertEqual(x.shape[0], features.shape[0]) self.assertEqual(x.shape[1], features.shape[1] + 1) for i in range(x.shape[0]): self.assertAlmostEqual(x[i, 0], 1.0) for j in range(features.shape[1]): self.assertAlmostEqual(x[i, j + 1], features[i, j])
def test_transform_rows_first(self): n_sessions = 3 features = pn.featurize(self.equity_data, n_sessions) # 2 columns of labels labels = pd.DataFrame(index=features.index, columns=['Label1', 'Label2']) labels['Label1'] = features.iloc[:, 0] * 0.5 labels['Label2'] = features.iloc[:, 0] * 2.0 transformed_features, transformed_labels = pn.data.transform(features, method="first", labels=labels) for i in range(len(transformed_features.index)): self.assertAlmostEqual(transformed_features.iloc[i, 0], 1.0) for i in range(len(transformed_labels.index)): self.assertAlmostEqual(transformed_labels.iloc[i, 0], 0.5) self.assertAlmostEqual(transformed_labels.iloc[i, 1], 2.0)
def test_transform_rows_first(self): n_sessions = 3 features = pn.featurize(self.equity_data, n_sessions) # 2 columns of labels labels = pd.DataFrame(index=features.index, columns=['Label1', 'Label2']) labels['Label1'] = features.iloc[:, 0] * 0.5 labels['Label2'] = features.iloc[:, 0] * 2.0 transformed_features, transformed_labels = pn.data.transform( features, method="first", labels=labels) for i in range(len(transformed_features.index)): self.assertAlmostEqual(transformed_features.iloc[i, 0], 1.0) for i in range(len(transformed_labels.index)): self.assertAlmostEqual(transformed_labels.iloc[i, 0], 0.5) self.assertAlmostEqual(transformed_labels.iloc[i, 1], 2.0)
def test_featurize_defaults(self): n_sessions = 3 features = pn.featurize(self.equity_data, n_sessions) self.assertEqual(len(features.index), len(self.equity_data.index) - n_sessions + 1) self.assertEqual(len(features.columns), n_sessions)