You can use:
1. pickle
from sklearn import svm
from sklearn import datasets
iris = datasets.load_iris()
X, y = iris.data, iris.target
clf = svm.SVC()
clf.fit(X, y)  
##########################
# SAVE-LOAD using pickle #
##########################
import pickle
# save
with open('model.pkl','wb') as f:
    pickle.dump(clf,f)
# load
with open('model.pkl', 'rb') as f:
    clf2 = pickle.load(f)
clf2.predict(X[0:1])
2. joblib
From scikit-learn documentation:
In the specific case of scikit-learn, it may be better to use joblib’s
  replacement of pickle (dump & load), which is more efficient on
  objects that carry large numpy arrays internally as is often the case
  for fitted scikit-learn estimators, but can only pickle to the disk
  and not to a string:
from sklearn import svm
from sklearn import datasets
iris = datasets.load_iris()
X, y = iris.data, iris.target
clf = svm.SVC()
clf.fit(X, y)  
##########################
# SAVE-LOAD using joblib #
##########################
import joblib
# save
joblib.dump(clf, "model.pkl") 
# load
clf2 = joblib.load("model.pkl")
clf2.predict(X[0:1])