Sklearn SGDClassifier частичная подгонка
Я пытаюсь использовать SGD для классификации большого набора данных. Поскольку данные слишком велики, чтобы поместиться в память, я бы хотел использоватьpartial_fit метод обучения классификатора. Я выбрал образец набора данных (100 000 строк), который помещается в память для проверкипоместиться противpartial_fit:
from sklearn.linear_model import SGDClassifier
def batches(l, n):
for i in xrange(0, len(l), n):
yield l[i:i+n]
clf1 = SGDClassifier(shuffle=True, loss='log')
clf1.fit(X, Y)
clf2 = SGDClassifier(shuffle=True, loss='log')
n_iter = 60
for n in range(n_iter):
for batch in batches(range(len(X)), 10000):
clf2.partial_fit(X[batch[0]:batch[-1]+1], Y[batch[0]:batch[-1]+1], classes=numpy.unique(Y))
Затем я тестирую оба классификатора с одинаковым набором тестов. В первом случае я получаю точность 100%. Насколько я понимаю, SGD по умолчанию проходит 5 раз по тренировочным данным (n_iter = 5).
Во втором случае мне нужно 60 раз передать данные, чтобы достичь той же точности.
Почему эта разница (5 против 60)? Или я что-то не так делаю?