Sklearn SGDClassifier ajuste parcial

Estou tentando usar o SGD para classificar um grande conjunto de dados. Como os dados são grandes demais para caber na memória, eu gostaria de usar oparcial_fit método para treinar o classificador. Selecionei uma amostra do conjunto de dados (100.000 linhas) que cabe na memória para testarem forma vs.parcial_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))

Depois, testo os dois classificadores com um conjunto de testes idêntico. No primeiro caso, obtenho uma precisão de 100%. Pelo que entendi, o SGD, por padrão, passa 5 vezes nos dados de treinamento (n_iter = 5).

No segundo caso, tenho que passar 60 vezes sobre os dados para alcançar a mesma precisão.

Por que essa diferença (5 vs. 60)? Ou estou fazendo algo errado?

questionAnswers(1)

yourAnswerToTheQuestion