Notez que l'ensemble de données np.array utilisé dans Scikit-learn ne pouvait pas être utilisé immédiatement dans Chainer (1.11).
Préparer
--Ensemble de données de formation: train_X, train_y --Ensemble de données de test: test_X, test_y
ici
--train_X et test_X sont np.array de (nombre d'échantillons, dimensions). Habituellement float32. --train_y et test_y sont np.array of (nombre d'échantillons,). Probablement int64 par défaut.
Exemple SVM avec sklearn
from sklearn import svm
clf = svm.SVC()
clf.fit(train_X, train_y) #Apprentissage
clf.score(test_X, test_y) #Prédiction / calcul du score
prob_X = clf.predict_proba(test_X) #Prédiction de probabilité
Utiliser le formateur de chainer
#Commencez par créer une classe.
class sk_dataset(chainer.dataset.DatasetMixin):
def __init__(self, X, y):
self.X = X.astype('float32') #Float32 est requis, alors convertissez ici
self.y = y.astype('int32') #Puisque int32 est requis, convertissez ici
def __len__(self):
return self.X.shape[0]
def get_example(self, i):
return self.X[i], self.y[i]
# np.tableau sk_Convertir en type de jeu de données
train = sk_dataset(train_X, train_y)
test = sk_dataset(test_X, test_y)
#Le reste est la rue du tutoriel
model = L.Classifier(MLP())
optimizer = chainer.optimizers.SGD()
optimizer.setup(model)
train_iter = iterators.SerialIterator(train, batch_size=100)
test_iter = iterators.SerialIterator(test, batch_size=100, repeat=False, shuffle=False)
updater = training.StandardUpdater(train_iter, optimizer)
trainer = training.Trainer(updater, (20, 'epoch'), out='result')
trainer.run() #Apprentissage
###Prévoir
i = 10 #i-ème données
dim = 4096 #Dimension des données
print("predict:", model.predictor(Variable(test[i][0].reshape((1,dim)))).data) #Sortie brute
print("probability:", F.softmax(model.predictor(Variable(test[i][0].reshape((1,dim)))).data).data) #Prédiction de probabilité
print("label:", F.softmax(model.predictor(Variable(test[i][0].reshape((1,dim)))).data).data.argmax()) #Prédiction d'étiquette
Recommended Posts