scikit-learn est la bibliothèque d'apprentissage automatique presque de facto de Python. L'avantage de scikit-learn est que de nombreux algorithmes sont implémentés, mais il est conçu de manière cohérente et peut gérer divers algorithmes de manière commune. Si vous implémentez un nouvel algorithme qui n'est pas dans scikit-learn, ou si vous l'implémentez pour qu'il puisse être traité comme d'autres estimateurs de sciki-learn lors de l'utilisation d'autres bibliothèques, il sera contre-validé comme l'estimateur implémenté à l'origine. Vous pouvez évaluer les performances et optimiser les paramètres par recherche de grille. Voici l'implémentation minimale de l'estimateur. Ici, nous considérons les discriminateurs ou les régressions comme des cibles (pas de clustering ou d'apprentissage non supervisé).
from sklearn.base import BaseEstimator
class MyEstimator(BaseEstimator):
def __init__(self, param1, param2):
self.param1 = param1
self.param2 = param2
def fit(self, x, y):
return self
def predict(self, x):
return [1.0]*len(x)
def score(self, x, y):
return 1
def get_params(self, deep=True):
return {'param1': self.param1, 'param2': self.param2}
def set_params(self, **parameters):
for parameter, value in parameters.items():
setattr(self,parameter, value)
return self
Définissez la classe d'estimateur en héritant de sklearn.base.BaseEstimator
. Veuillez réécrire le contenu de la méthode comme il convient.
Cross validation:
x = [[2,3],[4,5],[6,1],[2,0]]
y = [0.0,9.4,2.1,0.9]
estimator = MyEstimator()
cross_validation.cross_val_score(estimator,x,y,cv=3)
Result:
array([ 1., 1., 1.])
Grid search:
gs = grid_search.GridSearchCV(estimator, {'param1': [0,10], 'param2': (1, 1e-1, 1e-2)})
gs.fit(x,y)
gs.best_estimator_, gs.best_params_, gs.best_score_
Result:
(MyEstimator(), {'param1': 0, 'param2': 1}, 1.0)
cross_validation
Afin d'effectuer une validation croisée, la méthode fit
pour apprendre les données d'entraînement et la méthode score
pour saisir les données de test, comparer la valeur estimée à partir de celles-ci avec la valeur de réponse correcte et sortir le score sont nécessaires.
fit(self, x, y)
Cette fonction apprend de sorte que la sortie soit «y» pour l'entrée «x».
predict(self, x)
Une fonction dont la sortie renvoie y_pred
pour l'entrée x
. Vous n'avez pas besoin de predire
si vous voulez juste faire cross_validation
, mais dans la plupart des cas, vous appellerez predire
inside score
. En implémentant plusieurs héritages de sklearnbase.ClassifierMixin
et scikit-learn.base.RegressionMixin
et en implémentant uniquement prédire
, vous pouvez utiliser la fonction score
implémentée.
score(self, x, y)
C'est une fonction qui estime la sortie y_pred
pour l'entrée x
, compare le y_pred
avec la bonne réponse y
, et renvoie le score (si l'erreur ou l'étiquette correspond, etc.).
grid_search
Pour faire grid_search
, vous devez manipuler les paramètres en plus d'apprendre et de calculer le score comme défini ci-dessus. Implémentez la méthode get_params
pour obtenir des paramètres indépendants des données et la méthode set_params
pour définir les paramètres.
get_params(self, deep=True)
Dans la méthode get_params
, la clé de paramètre est le nom de l'attribut. Essayez de renvoyer un dictionnaire où valeur est une valeur.
set_params(self, **parameters)
C'est un régleur de paramètres. Passez-le dans un dictionnaire comme get_params
.
Mixin
La méthode implémentée peut être utilisée par héritage multiple de «sklearn.base.ClassifierMixin» pour le modèle d'identification et de «sklearn.base.RegressorMixin» pour le modèle de régression. Si vous héritez de ces
sklearn.base.ClassifierMixin
_estimator_type
sur classifier
ou regressor
score
. Puisque la méthode predire
est appelée dans la méthode score
, la méthode prédire
doit être implémentée.sklearn.base.RegressorMixin
_estimator_type
sur regressor
score
. Puisque la méthode predire
est appelée dans la méthode score
, la méthode prédire
doit être implémentée.Vous pouvez vérifier si votre propre estimateur est compatible avec sklearn avec sklearn.utils.estimator_checks.check_estimator
. En passant, dans l'exemple présenté dans cet article, j'obtiens une erreur indiquant que l'entrée n'est pas validée. Il ne devrait y avoir aucun problème si vous l'utilisez vous-même.
--Créez votre propre classe d'estimateur en héritant de sklearn.base.BaseEstimator
fit
, score
pour faire cross_validation
--Pour faire grid_search
, vous avez besoin de plus de méthodes get_params
et set_params
.
--Si vous définissez ClassifierMixin
ou RegressorMixin
, vous pouvez utiliser la méthode score
pour calculer le score en utilisant le prédire
que vous avez implémenté.La plupart de ce que j'ai écrit ici Référence API pour le module sklearn.base Informations pour les développeurs sur le site officiel C'est en rapport avec.
Recommended Posts