由于目前在Watson ML服务上发布scikit-learn模型的限制,它不允许任何自定义转换器等(https://datascience.ibm.com/docs/content/analyze-data/ml-scikit-learn.html)在管道中,我最终部署了一个仅包含SVC分类器,而不是TfidfVectorizer。
这意味着,我需要"转换"在调用Watson ML上的模型之前,使用TfidfVectorizer获取原始测试数据。
只要我不尝试在线部署方法(我需要,因为我想要一个应用程序将请求发布到我的模型中),这样工作正常。
如何从TfidfVectorizer.transform序列化我的稀疏矩阵并将其作为json有效负载传递给WML服务?
谢谢!
答案 0 :(得分:2)
实际上,我正在回答我的问题; - )
如果你遇到必须向WML发送稀疏矩阵的情况,那么你可以使用
<yourmatrix>.todense().tolist()
所以,要把它放回到我的初始问题的上下文中,我可以发送变换的结果:
valuesList = tfidf_vectorizer.transform(test).todense().tolist()
payload_scoring = {"values": [[valuesList]]}
response_scoring = requests.post(scoringUrl, json=payload_scoring, headers=header)