Implemented early stopping but came across the error SGDClassifier: Not fitted error in sklearn
It is because clone will only copy the estimator with the same parameters, but not with the attached data. So it results a new estimator that has not been fit on the data. Hence, you couldn't use it to make prediction.

Instead of clone, you can use either pickle or joblib.

1. pickle 

import pickle
...

for epoch in range(1000):
    ...
    if error &lt; minimum_val_error:
        best_model = pickle.dumps(sgd_clf)


Later if you want to use the stored model:

sgd_clf2 = pickle.loads(best_model)
y_test_predictions = sgd_clf2.predict(X_test)


2. joblib

You can also use joblib, and store the model to the disk.

from sklearn.externals import joblib
...

joblib.dump(sgd_clf, 'filename.joblib') 


To use the stored model

clf = joblib.load('filename.joblib')