Cara untuk melatih Regresi Logistik adalah dengan menggunakan keturunan gradien stokastik, yang scikit-belajar menawarkan antarmuka.
Apa yang ingin saya lakukan adalah mengambil scikit-belajar ini SGDClassifier dan memilikinya skor yang sama sebagai Regresi Logistik di sini . Namun, saya harus kehilangan beberapa peningkatan pembelajaran mesin, karena skor saya tidak setara.
Ini adalah kode saya saat ini. Apa yang saya lewatkan pada SGDClassifier yang akan menghasilkan hasil yang sama dengan Regresi Logistik?
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import SGDClassifier
import numpy as np
import pandas as pd
from sklearn.cross_validation import KFold
from sklearn.metrics import accuracy_score
# Note that the iris dataset is available in sklearn by default.
# This data is also conveniently preprocessed.
iris = datasets.load_iris()
X = iris["data"]
Y = iris["target"]
numFolds = 10
kf = KFold(len(X), numFolds, shuffle=True)
# These are "Class objects". For each Class, find the AUC through
# 10 fold cross validation.
Models = [LogisticRegression, SGDClassifier]
params = [{}, {"loss": "log", "penalty": "l2"}]
for param, Model in zip(params, Models):
total = 0
for train_indices, test_indices in kf:
train_X = X[train_indices, :]; train_Y = Y[train_indices]
test_X = X[test_indices, :]; test_Y = Y[test_indices]
reg = Model(**param)
reg.fit(train_X, train_Y)
predictions = reg.predict(test_X)
total += accuracy_score(test_Y, predictions)
accuracy = total / numFolds
print "Accuracy score of {0}: {1}".format(Model.__name__, accuracy)
Output saya:
Accuracy score of LogisticRegression: 0.946666666667
Accuracy score of SGDClassifier: 0.76