J'essaie d'utiliser SkLearn Classification Bayes .
gnb = GaussianNB()
gnb.set_params('sigma__0.2')
gnb.fit(np.transpose([xn, yn]), y)
Mais je reçois:
set_params() takes exactly 1 argument (2 given)
maintenant j'essaye d'utiliser ce code:
gnb = GaussianNB()
arr = np.zeros((len(labs),len(y)))
arr.fill(sigma)
gnb.set_params(sigma_ = arr)
Et obtenir:
ValueError: Invalid parameter sigma_ for estimator GaussianNB
Est-ce que le nom ou la valeur du paramètre est incorrect?
set_params()
prend uniquement des arguments de mots clés, comme on peut le voir dans la documentation. Il est déclaré en tant que set_params(**params)
.
Donc, pour que cela fonctionne, vous devez l'appeler avec des arguments de mots clés uniquement: gnb.set_params(some_param = 'sigma__0.2')
Je suis juste tombé sur cela, alors voici une solution pour plusieurs arguments d'un dictionnaire:
from sklearn import svm
params_svm = {"kernel":"rbf", "C":0.1, "gamma":0.1, "class_weight":"auto"}
clf = svm.SVC()
clf.set_params(**params_svm)
Le problème ici est que GaussianNB
a un seul paramètre et est priors
.
De la documentation
class sklearn.naive_bayes.GaussianNB(priors=None)
Le paramètre sigma
que vous recherchez est en fait un attribut de la classe GaussianNB, auquel les méthodes set_params()
et get_params()
ne peuvent pas accéder.
Vous pouvez manipuler les attributs sigma
et theta
en fournissant du nom Priors
à GaussianNB ou en l'adaptant à un ensemble d'apprentissage spécifique.
Il est écrit dans la documentation que la syntaxe est la suivante:
set_params (** paramètres)
Ces deux étoiles signifient que vous devez donner des arguments de mots clés ( lisez à ce sujet ici ). Donc, vous devez le faire dans le form your_param = 'sigma__0.2'
sigma_
est un attribut d'instance calculé lors de la formation. Vous n'êtes probablement pas destiné à le modifier directement.
from sklearn.naive_bayes import GaussianNB
import numpy as np
X = np.array([[-1,-1],[-2,-1],[-3,-2],[1,1],[2,1],[3,2]])
y = np.array([1,1,1,2,2,2])
gnb = GaussianNB()
print gnb.sigma_
Sortie:
AttributeError: 'GaussianNB' object has no attribute 'sigma_'
Plus de code:
gnb.fit(X,y) ## training
print gnb.sigma_
Sortie:
array([[ 0.66666667, 0.22222223],
[ 0.66666667, 0.22222223]])
Après la formation, il est possible de modifier la valeur sigma_
. Cela pourrait affecter les résultats de la prédiction.
gnb.sigma_ = np.array([[1,1],[1,1]])