I'm trying to create a Python script for feature selection using PyGAD
The code below shows my previous attempt, but I haven’t achieved the desired result. Can you please help me with the correct implementation? Im taking the primary example shown on the package's documentation page.The error Im receiving is:
AttributeError: 'tuple' object has no attribute 'tb_frame'
My attempt so far:
import pygad
import numpy
from sklearn.model_selection import train_test_split, cross_val_score
from src.learner_params import target_column, model_features
from sklearn.datasets import load_breast_cancer
from lightgbm import LGBMClassifier as lgbm
bc = load_breast_cancer()
bst = lgbm(random_state = 42)
function_inputs = bc.feature_names
X, y = bc.data,bc.target
X = pd.DataFrame(X, columns=bc.feature_names)
X_train, X_test, y_train, y_test = train_test_split(X,
y,
random_state=42)
def fitness_func(ga_instance, solution, solution_idx):
# output = numpy.sum(solution*function_inputs)
score = cross_val_score(bst, X_train.loc[:,solution], y_train, scoring="roc_auc", cv = 2).mean()
fitness = score
return fitness
fitness_function = fitness_func
num_generations = 50
num_parents_mating = 4
sol_per_pop = 8
num_genes = len(X_train)
init_range_low = -2
init_range_high = 5
parent_selection_type = "sss"
keep_parents = 1
crossover_type = "single_point"
mutation_type = "random"
mutation_percent_genes = 10
ga_instance = pygad.GA(num_generations=num_generations,
num_parents_mating=num_parents_mating,
fitness_func=fitness_function,
sol_per_pop=sol_per_pop,
num_genes=num_genes,
init_range_low=init_range_low,
init_range_high=init_range_high,
parent_selection_type=parent_selection_type,
keep_parents=keep_parents,
crossover_type=crossover_type,
mutation_type=mutation_type,
mutation_percent_genes=mutation_percent_genes)
ga_instance.run()
source https://stackoverflow.com/questions/76715689/using-pygad-for-feature-selection
Comments
Post a Comment