有几种方法可以访问DataAPI上的数据。
以下是通过Python客户端访问文件的4种不同方法:
import Algorithmia client = Algorithmia.client("<YOUR_API_KEY>") dataFile = client.file("data://<USER_NAME>/<COLLECTION_NAME>/<FILE_NAME>").getFile() dataText = client.file("data://<USER_NAME>/<COLLECTION_NAME>/<FILE_NAME>").getString() dataJSON = client.file("data://<USER_NAME>/<COLLECTION_NAME>/<FILE_NAME>").getJson() dataBytes = client.file("data://<USER_NAME>/<COLLECTION_NAME>/<FILE_NAME>").getBytes()
由于Sklearn需要模型文件的路径,因此最简单的方法是通过文件对象(也就是数据文件)。
根据官方Python2.7文档 ,如果创建的文件对象不是 open() function,对象属性 name 通常对应于文件的路径。
open()
name
在这种情况下,您需要编写如下内容:
import Algorithmia def apply(input): # You don't need to write your API key if you're editing in the web editor client = Algorithmia.client() modelFile = client.file("data://(username)/testcollection/model.pkl").getFile() modelFilePath = modelFile.name model = joblib.load(modelFilePath) return "empty"
但 根据官方Sklearn模型持久性文档 ,您还应该能够只传递类文件对象而不是文件名。
因此,我们可以跳过我们尝试获取文件名的部分,然后通过 modelFile 宾语:
modelFile
import Algorithmia def apply(input): # You don't need to write your API key if you're editing in the web editor client = Algorithmia.client() modelFile = client.file("data://(username)/testcollection/model.pkl").getFile() model = joblib.load(modelFile) return "empty"
编辑: 这里还有一篇关于Scikit-Learn中关于模型持久性的官方算法开发中心的文章 。
完整披露:我是一名算法工程师 Algorithmia 。