def test_SymbolicFeatures_pickle(data): exponents = [1] operators = {} sym = sf.SymbolicFeatures(exponents, operators) assert pickle.loads(pickle.dumps(sym)).__dict__ == sym.__dict__ sym.fit(data) assert pickle.loads( pickle.dumps(sym)).get_feature_names() == sym.get_feature_names()
def test_SymbolicFeatures_remove_id(data): """ProductFeature x_i * x_i**2 == x_i**3 """ operators = {} exponents = [1, 2, 3] sym = sf.SymbolicFeatures(exponents, operators).fit(data) # simple * 2 + products - excluded assert len(sym.get_feature_names()) == 2 * 3 + 15 - 2
def test_SymbolicFeatures(data): operators = {"log": np.log} exponents = [2] sym = sf.SymbolicFeatures(exponents, operators) features = sym.fit_transform(data) names = sym.get_feature_names() assert len(names) == features.shape[1] assert features.shape[0] == data.shape[0]
from sklearn.datasets import load_boston from sklearn.linear_model import Lasso import matplotlib.pyplot as plt import numpy as np import sparsereg.preprocessing.symfeat as sf from sparsereg.model import STRidge from sparsereg.util.net import net data = load_boston() x, y = data.data, data.target exponents = [1] operators = {} sym = sf.SymbolicFeatures(exponents=exponents, operators=operators) features = sym.fit_transform(x) ests = [Lasso, STRidge] attrs = ["alpha", "threshold"] names = ["Lasso", "STRidge"] for est, attr, name in zip(ests, attrs, names): models = net(est, features, y, attr, filter=True, max_coarsity=5, r_max=1e5)
def test_SymbolicFeatures_redundant_data(): data = np.ones(shape=(10, 10)) exponents = [1, 2] operators = {} sym = sf.SymbolicFeatures(exponents, operators).fit(data) assert len(sym.get_feature_names()) == 1