2013-03-22 11 views
9

python scikit svmを使用して、clf.fit(X、Y)を実行した後、サポートベクトルを取得します。 svm.SVCオブジェクトをインスタンス化するときに、これらのサポートベクターを直接(パラメータとして渡して)ロードできますか?つまり、毎回fit()メソッドを実行して述語を実行する必要はありません。scikit SVMを学ぶ、サポートベクターを保存/読み込む方法は?

+0

可能な重複http://stackoverflow.com/questions/11440970/how-can-i-save-a-libsvm-python-object-instance – Pedrom

答えて

17

http://scikit-learn.org/stable/modules/model_persistence.html

1.2.4モデルの永続性 Pythonの組み込みの永続化モデル、すなわち、ピクルスを使用してscikitでモデルを保存することが可能です。 scikitの特定の場合には

>>> from sklearn import svm 
>>> from sklearn import datasets 
>>> clf = svm.SVC() 
>>> iris = datasets.load_iris() 
>>> X, y = iris.data, iris.target 
>>> clf.fit(X, y) 
SVC(kernel=’rbf’, C=1.0, probability=False, degree=3, coef0=0.0, eps=0.001, 
cache_size=100.0, shrinking=True, gamma=0.00666666666667) 
>>> import pickle 
>>> s = pickle.dumps(clf) 
>>> clf2 = pickle.loads(s) 
>>> clf2.predict(X[0]) 
array([ 0.]) 
>>> y[0] 
0 

、ビッグデータの効率的な 以上である、漬物のJOBLIBの交換を使用する方が面白いかもしれないが、唯一のディスクにしていない文字列に酸洗いすることができます

>>> from sklearn.externals import joblib 
>>> joblib.dump(clf, ’filename.pkl’) 
+1

リンクが壊れています。代わりにこれを使用してください:http://scikit-learn.org/stable/modules/model_persistence.html – Tommz

+0

pickleでは、特定のscikitバージョンに縛られますが、モデルの長期保存には適していません。 – Adversus

3

モデルを保存して後で使用することができます。 前に適合し保存したモデルが存在する場合、モデルを使用するために以下のコードを書きました。 scikitマニュアルから

from sklearn.externals import joblib 
svm_linear_estimator = svm.SVC(kernel='linear', probability=False, C=1) 
try: 
    estimator = joblib.load("/my_models/%s.pkl"%dataset_name) 
    print "using trained model" 
except: 
    print "building new model" 
    estimator.fit(data_train, class_train) 
    joblib.dump(estimator,"/my_models/%s.pkl"%dataset_name) 
+0

あなたは訓練されたモデルを保存するとき、それは1以上のものを作成することができますファイル。それでも "dataset_name.pkl"という名前で呼び出すことができます。上記の変数推定子はsvm_linear_estimatorだったはずです。 –

+1

私はちょうどos.path.exists()がtry catchを使うよりスマートだと気付きました。 –

関連する問題