Beachten Sie, dass der in Scikit-learn verwendete np.array-Datensatz in Chainer (1.11) nicht sofort verwendet werden konnte.
Vorbereiten
Hier
--train_X und test_X sind np.array von (Anzahl der Proben, Abmessungen). Normalerweise float32. --train_y und test_y sind np.array von (Anzahl der Proben,). Wahrscheinlich standardmäßig int64.
SVM-Beispiel mit sklearn
from sklearn import svm
clf = svm.SVC()
clf.fit(train_X, train_y) #Lernen
clf.score(test_X, test_y) #Vorhersage / Punkteberechnung
prob_X = clf.predict_proba(test_X) #Wahrscheinlichkeitsvorhersage
Verwenden Sie einen Chainer-Trainer
#Erstellen Sie zunächst eine Klasse.
class sk_dataset(chainer.dataset.DatasetMixin):
def __init__(self, X, y):
self.X = X.astype('float32') #Float32 ist erforderlich, also hier konvertieren
self.y = y.astype('int32') #Da int32 erforderlich ist, konvertieren Sie hier
def __len__(self):
return self.X.shape[0]
def get_example(self, i):
return self.X[i], self.y[i]
# np.sk Array_In Datensatztyp konvertieren
train = sk_dataset(train_X, train_y)
test = sk_dataset(test_X, test_y)
#Der Rest ist Tutorial Street
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() #Lernen
###Prognose
i = 10 #i-te Daten
dim = 4096 #Datendimension
print("predict:", model.predictor(Variable(test[i][0].reshape((1,dim)))).data) #Rohleistung
print("probability:", F.softmax(model.predictor(Variable(test[i][0].reshape((1,dim)))).data).data) #Wahrscheinlichkeitsvorhersage
print("label:", F.softmax(model.predictor(Variable(test[i][0].reshape((1,dim)))).data).data.argmax()) #Etikettenvorhersage
Recommended Posts