2016-09-20 19 views
0

我正在使用他新的雲數據並嘗試使用魔術函數%%存儲將二進制文件保存到GCS存儲桶。例如,我喜歡保存PANDAS數據框架(用來做爲pickle文件),大多數是SciKitLearn模型對象(在訓練之後)。文本是datalab中%%存儲魔術函數的唯一內容類型

我嘗試了一些使用%%存儲的東西,但沒有運氣。在我看來,%%存儲僅用於處理文本數據。這是正確的嗎?例如,我對CSV文件沒有任何問題。我可以爲%%storage write提供的參數只是存儲桶對象和要保存的變量。

我知道datalab中包含的筆記本計劃是datalab文檔。但公平地說,這些文件是非常差的,要用禮貌的話來說。另外,當光標在單元內的代碼上時,代碼上的嵌入式文檔(按shift + tab),它也非常差。

如果您有任何其他來源的文檔,請告訴我。我試着仔細閱讀git hub代碼,但無法得到它。

在我看來,添加魔術功能的功能應該使事情變得更容易,特別是數據分析和使用筆記本電腦。雖然這種糟糕的實施和糟糕的文件記錄,但卻使這一目標失敗並使其更加繁瑣。實際上,如果你是新手,一個好的建議是直接學習python的gcloud API,並且不要擔心datalab的魔術功能和datalab API的成熟度。

回答

0

這對我來說可以在GCS上保存一個scikit-Learn模型。不知道這是否是最有效的方式,但我已經測試和工作。使用來自s的呼叫醃製模型對象

  1. 設置您的存儲桶。 classifier是scikit-learn對象。

    from gcloud import storage as gcs 
    bucket = gcs.Client().get_bucket('name') 
    file_msg = 'path_to_file/filename.pkl' 
    
  2. 保存至剷鬥

    # serialize contents 
    contents = BytesIO() pkl.dump(classifier, contents) 
    
    # upload 
    file_blob = bucket.blob(file_msg) 
    file_blob.upload_from_string(contents.getvalue(), 
    content_type='sklearn/pickle') 
    
    # Tested downloading file to local machine and `pickle.load(open(filename), 'rb')` and it loads fine. 
    
  3. 負載作爲對象

    # set up bucket (already done) 
    
    # set up blob for file 
    file_blob = bucket.blob(file_msg) 
    
    # get serialized contents 
    contents = BytesIO(file_blob.download_as_string()) 
    
    # read into msgpack under pandas 
    model = pkl.load(contents) 
    
相關問題