Sklearn SGDClassifier ajuste parcial

Estoy tratando de usar SGD para clasificar un gran conjunto de datos. Como los datos son demasiado grandes para caber en la memoria, me gustaría usar elparcial_fit Método para entrenar al clasificador. He seleccionado una muestra del conjunto de datos (100,000 filas) que cabe en la memoria para probarajuste 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))

Luego pruebo ambos clasificadores con un conjunto de pruebas idéntico. En el primer caso obtengo una precisión del 100%. Según tengo entendido, SGD por defecto pasa 5 veces sobre los datos de entrenamiento (n_iter = 5).

En el segundo caso, tengo que pasar 60 veces sobre los datos para alcanzar la misma precisión.

¿Por qué esta diferencia (5 vs 60)? ¿O estoy haciendo algo mal?

Respuestas a la pregunta(1)

Su respuesta a la pregunta