5 CL3
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neural_network import MLPRegressor
from geneticalgorithm import geneticalgorithm as ga
import warnings
def fitness_function(params):
hidden_layer_sizes = (int(params[0]),) * int(params[1])
activation = ['identity', 'logistic', 'tanh', 'relu'][int(params[2])]
solver = ['lbfgs', 'sgd', 'adam'][int(params[3])]
model = MLPRegressor(hidden_layer_sizes=hidden_layer_sizes, activation=activation, solver=solver)
model.fit(X_train, y_train)
fitness = -model.score(X_val, y_val)
return fitness
def train_neural_network(params):
hidden_layer_sizes = (int(params[0]),) * int(params[1])
activation = ['identity', 'logistic', 'tanh', 'relu'][int(params[2])]
solver = ['lbfgs', 'sgd', 'adam'][int(params[3])]
model = MLPRegressor(hidden_layer_sizes=hidden_layer_sizes, activation=activation, solver=solver)
model.fit(X_train, y_train)
validation_error = -model.score(X_val, y_val)
return validation_error
np.random.seed(42)
num_samples = 1000
num_features = 5
X = np.random.rand(num_samples, num_features)
true_coefficients = np.random.rand(num_features) * 10
noise = np.random.normal(loc=0, scale=1, size=num_samples)
y = np.dot(X, true_coefficients) + noise
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)
warnings.filterwarnings("ignore")
number_of_parameters = 4
varbound = np.array([[5, 50],
[1, 5],
[0, 3],
[0, 2]])
algorithm_param = {'max_num_iteration': 1, 'population_size': 100, 'mutation_probability': 0.1,
'elit_ratio': 0.01, 'crossover_probability': 0.5, 'parents_portion': 0.3,
'crossover_type': 'uniform', 'max_iteration_without_improv': None}
model = ga(function=fitness_function, dimension=number_of_parameters, variable_type='int', variable_boundaries=varbound,
algorithm_parameters=algorithm_param)
model.run()
best_params = model.output_dict['variable']
validation_error = train_neural_network(best_params)
print("Best parameters found by genetic algorithm:", best_params)
print("Validation error of neural network:", validation_error)
Comments
Post a Comment