def _evaluate(self, individual, X, y, cv=3):
""" Evaluate method
Parameters
----------
individual: list [n_features]
The input individual to be evaluated
Return
----------
Score of the individual : turple( cross_val_score, feature score)
"""
# Select Features
features = list(compress(range(len(individual)), individual))
train = np.reshape([X[:, i] for i in features],
[len(features), len(X)]).T
if train.shape[1] == 0:
return 0,1,
# Applying K-Fold Cross Validation
accuracies = cross_val_score(estimator=clone(self.estimator), X=train,
y=y, cv=cv,
scoring=self.cv_metric_function)
if self.features_metric_function == None :
feature_score = pow(sum(individual)/(len(individual)*5), 2)
else:
feature_score = self.features_metric_function(individual)
return accuracies.mean() - accuracies.std(), feature_score
评论列表
文章目录