Exemple #1
0
        'estimator': ExtraTreesRegressor(**ifs_regressor_params),
        'n_features_step': 1,
        'cv': None,
        'scale': True,
        'verbose': 1,
        'significance': args.significance
    }
    selector = IFS(**ifs_params)
    features_names = np.array(['S%s' % i for i in xrange(state_dim)] +
                              ['A%s' % i for i in xrange(action_dim)])
    rfs_params = {
        'feature_selector': selector,
        'features_names': features_names,
        'verbose': 1
    }
    fs = RFS(**rfs_params)

    # Split dataset for RFS
    state, actions, reward, next_states = split_dataset(
        dataset, state_dim, action_dim, reward_dim)

    # Run RFS
    fs.fit(state, actions, next_states, reward)

    # Reduce the dataset for FQI
    selected_states = []
    selected_actions = []
    for f in features_names[np.where(fs.get_support())]:
        if f.startswith('S'):
            selected_states.append(f)
        if f.startswith('A'):
Exemple #2
0
# dataset: s, a, r, s'
# dataset = evaluation.collect_episodes(mdp, n_episodes=50)
dataset = np.loadtxt('encoded_dataset.csv', skiprows=1, delimiter=',')
# check_dataset(dataset, state_dim, action_dim, reward_dim)

estimator = ExtraTreesRegressor(n_estimators=50, n_jobs=-1,
                                             importance_criterion="gini")
# estimator = DecisionTreeRegressor(importance_criterion="gini")

selector = IFS(estimator=estimator,
               scale=True, verbose=1)
features_names = ['S%s' % i for i in xrange(state_dim)] + ['A%s' % i for i in
                                                           xrange(action_dim)]
fs = RFS(feature_selector=selector,
         # features_names=np.array(['S0', 'S1', 'S2', 'S3', 'A0', 'A1']),
         features_names=np.array(features_names),
         verbose=1)

state, actions, reward, next_states = \
    split_dataset(dataset, state_dim, action_dim, reward_dim)

state = dataset[:,0:state_dim]
actions = dataset[:,state_dim:state_dim+action_dim]
reward = dataset[:,state_dim+action_dim]

# print(dataset[:10, :])

fs.fit(state, actions, next_states, reward)
print(
    fs.get_support())  # this are the selected features, it should be [s0, s2, a0]
Exemple #3
0
    # Create IFS and RFS models
    ifs_regressor_params = {'n_estimators': args.trees,
                            'n_jobs': args.njobs}
    ifs_params = {'estimator': ExtraTreesRegressor(**ifs_regressor_params),
                  'n_features_step': 1,
                  'cv': None,
                  'scale': True,
                  'verbose': 1,
                  'significance': args.significance}
    selector = IFS(**ifs_params)
    features_names = np.array(['S%s' % i for i in xrange(state_dim)] + ['A%s' % i for i in xrange(action_dim)])
    rfs_params = {'feature_selector': selector,
                  'features_names': features_names,
                  'verbose': 1}
    fs = RFS(**rfs_params)

    # Split dataset for RFS
    state, actions, reward, next_states = split_dataset(dataset, state_dim, action_dim, reward_dim)

    # Run RFS
    fs.fit(state, actions, next_states, reward)

    # Reduce the dataset for FQI
    selected_states = []
    selected_actions = []
    for f in features_names[np.where(fs.get_support())]:
        if f.startswith('S'):
            selected_states.append(f)
        if f.startswith('A'):
            selected_actions.append(f)
Exemple #4
0
# np.random.seed(3452)

mdp = env.SyntheticToyFS()
state_dim, action_dim, reward_dim = get_space_info(mdp)
nextstate_idx = state_dim + action_dim + reward_dim
reward_idx = action_dim + state_dim

# dataset: s, a, r, s'
dataset = evaluation.collect_episodes(mdp, n_episodes=50)
check_dataset(dataset, state_dim, action_dim, reward_dim)

selector = IFS(estimator=ExtraTreesRegressor(n_estimators=50),
               scale=True, verbose=1)
fs = RFS(feature_selector=selector,
         features_names=np.array(['S0', 'S1', 'S2', 'S3', 'A0', 'A1']),
         verbose=1)

state, actions, reward, next_states, absorbing = \
    split_dataset(dataset, state_dim, action_dim, reward_dim)

# print(dataset[:10, :])

fs.fit(state, actions, next_states, reward)
selected_features = fs.features_names[fs.get_support()]
print('selected features: {}'.format(selected_features))  # this are the selected features, it should be [s0, s2, a0]
assert np.all(selected_features == ['S0', 'S2', 'A0'])

print(fs.nodes)
g = fs.export_graphviz()
g.view()
Exemple #5
0
# dataset: s, a, r, s'
# dataset = evaluation.collect_episodes(mdp, n_episodes=50)
dataset = np.loadtxt('encoded_dataset.csv', skiprows=1, delimiter=',')
# check_dataset(dataset, state_dim, action_dim, reward_dim)

estimator = ExtraTreesRegressor(n_estimators=50,
                                n_jobs=-1,
                                importance_criterion="gini")
# estimator = DecisionTreeRegressor(importance_criterion="gini")

selector = IFS(estimator=estimator, scale=True, verbose=1)
features_names = ['S%s' % i for i in xrange(state_dim)
                  ] + ['A%s' % i for i in xrange(action_dim)]
fs = RFS(
    feature_selector=selector,
    # features_names=np.array(['S0', 'S1', 'S2', 'S3', 'A0', 'A1']),
    features_names=np.array(features_names),
    verbose=1)

state, actions, reward, next_states = \
    split_dataset(dataset, state_dim, action_dim, reward_dim)

state = dataset[:, 0:state_dim]
actions = dataset[:, state_dim:state_dim + action_dim]
reward = dataset[:, state_dim + action_dim]

# print(dataset[:10, :])

fs.fit(state, actions, next_states, reward)
print(fs.get_support()
      )  # this are the selected features, it should be [s0, s2, a0]