2015-11-03 7 views
7

मैंने sklearn का उपयोग कर एक एसवीएम को प्रशिक्षित करने के लिए एक नमूना कार्यक्रम किया था। यहां कोडजॉबलिब का उपयोग कर स्केलेर्न डंपिंग मॉडल, कई फाइलों को डंप करता है। सही मॉडल कौन सा है?

from sklearn import svm 
from sklearn import datasets 
from sklearn.externals import joblib 

clf = svm.SVC() 
iris = datasets.load_iris() 
X, y = iris.data, iris.target 
clf.fit(X, y) 

print(clf.predict(X)) 
joblib.dump(clf, 'clf.pkl') 

जब मैं मॉडल फ़ाइल को डंप करता हूं तो मुझे यह फाइलें मिलती हैं। :

[ 'clf.pkl', 'clf.pkl_01.npy', 'clf.pkl_02.npy', 'clf.pkl_03.npy', 'clf.pkl_04.npy', 'clf.pkl_05। npy ',' clf.pkl_06.npy ',' clf.pkl_07.npy ',' clf.pkl_08.npy ',' clf.pkl_09.npy ',' clf.pkl_10.npy ',' clf.pkl_11.npy ' ]

अगर मैं कुछ गलत करता हूं तो मैं उलझन में हूं। या यह सामान्य है? * .npy फाइलें क्या है। और 11 क्यों हैं?

+3

मुमकिन है उन अपने डेटा के लिए 'numpy' सरणियों, कर रहे हैं' joblib' जब वापस लोड हो रहा है '.pkl' उन' np' सरणियों के लिए देखो और मॉडल डेटा – EdChum

+1

मैं सिर्फ एहसास हुआ वापस लोड होगा कि अगर मैं का उपयोग joblib.dump (clf, 'clf.pkl', compress = 9) मुझे केवल 1 clf.pkl फ़ाइल मिलती है। तो मुझे लगता है कि आपने कहा है कि वे numpy arrays हैं। लोडिंग के दौरान मैंने मैन्युअल रूप से लोड किया है या इसे स्वचालित रूप से लोड किया गया है? –

+0

मुझे उम्मीद है कि वे स्वचालित रूप से लोड हो जाएंगे, बस इसे – EdChum

उत्तर

11

सबकुछ 1 फ़ाइल में सहेजने के लिए आपको सही या किसी भी संख्या (उदाहरण के लिए 1) पर संपीड़न सेट करना चाहिए।

लेकिन आपको पता होना चाहिए कि जॉबलिब डंप/लोड की मुख्य विशेषताओं के लिए एनपी एरे के अलग-अलग प्रतिनिधित्व आवश्यक हैं, जॉबलिब इस अलग प्रतिनिधित्व के कारण पिकल की तुलना में एनपी सरणी के साथ ऑब्जेक्ट लोड और सहेज सकता है, और पिकल जॉबलिब के विपरीत सही ढंग से memmap numpy arrays के साथ वस्तुओं को सहेजें और लोड करें। यदि आप पूरे ऑब्जेक्ट का एक फ़ाइल क्रमबद्ध करना चाहते हैं (और memmap np arrays को सहेजना नहीं चाहते हैं) - मुझे लगता है कि पिकल का उपयोग करना बेहतर होगा, इस मामले में AFAIK जॉबलिब डंप/लोड कार्यक्षमता उसी गति पर काम करेगी अचार।

import numpy as np 
from scikit-learn.externals import joblib 

vector = np.arange(0, 10**7) 

%timeit joblib.dump(vector, 'vector.pkl') 
# 1 loops, best of 3: 818 ms per loop 
# file size ~ 80 MB 
%timeit vector_load = joblib.load('vector.pkl') 
# 10 loops, best of 3: 47.6 ms per loop 

# Compressed 
%timeit joblib.dump(vector, 'vector.pkl', compress=1) 
# 1 loops, best of 3: 1.58 s per loop 
# file size ~ 15.1 MB 
%timeit vector_load = joblib.load('vector.pkl') 
# 1 loops, best of 3: 442 ms per loop 

# Pickle 
%%timeit 
with open('vector.pkl', 'wb') as f: 
    pickle.dump(vector, f) 
# 1 loops, best of 3: 927 ms per loop 
%%timeit          
with open('vector.pkl', 'rb') as f: 
    vector_load = pickle.load(f) 
# 10 loops, best of 3: 94.1 ms per loop 
संबंधित मुद्दे

 संबंधित मुद्दे