在Google AI Platform上使用Scikit-learn获取预测的问题:"numpy.ndarray"对象没有属性'lower'"



我通常是机器学习的新手,并希望将我的模型存储在云中以进行在线预测。

我使用Jupyter Notebook在Scikit-Learn上成功培训了使用TFIDF Vecotrizer(用于情感分析(的Logistic回归模型,并使用其培训工作功能在Google AI平台上进行了训练。

我必须提到我将BS4,NLTK,LXML包括在我的培训软件包设置中,作为所需的PYPI软件包。

我的培训算法是这样的:

  1. 导入输入字符串的CSV文件及其标签(输出(作为PANDAS DataFrame(该模型具有1个输入变量,即字符串。(

  2. 使用BS4和NLTK预处理字符串来删除不必要的字符,停止字符,并使所有字符较低(重现此字符((仅使用小写字母的仅限字母(。

  3. 创建管道

    from sklearn.feature_extraction.text import TfidfVectorizer
    tvec=TfidfVectorizer()
    lclf = LogisticRegression(fit_intercept = False, random_state = 255, max_iter = 1000)
    from sklearn.pipeline import Pipeline
    model_1= Pipeline([('vect',tvec),('clf',lclf)])
    
  4. 使用GridSearchCV

    进行交叉验证
    from sklearn.model_selection import GridSearchCV
    param_grid = [{'vect__ngram_range' : [(1, 1)],
           'clf__penalty' : ['l1', 'l2'],
           'clf__C' : [1.0, 10.0, 100.0]},
          {'vect__ngram_range' : [(1, 1)],
           'clf__penalty' : ['l1', 'l2'],
           'clf__C' : [1.0, 10.0, 100.0],
           'vect__use_idf' : [False],
           'vect__norm' : [False]}]
    gs_lr_tfidf = GridSearchCV(model_1, param_grid, scoring='accuracy', 
    cv=5, verbose=1, n_jobs=-1)
    gs_lr_tfidf.fit(X_train, y_train)
    
  5. 以最佳的估计获取我所需的模型。这是保存在Google Model.joblib文件中的模型。

    clf = gs_lr_tfidf.best_estimator_
    

我可以使用

在jupyter笔记本文件上输出一个简单的预测
predicted = clf.predict(["INPUT STRING"])
print(predicted)

它为我的输入字符串打印了预测的标签。例如['好']或['bad']

但是,当模型经过成功培训并提交给AI平台时,当我尝试请求(以所需的JSON格式(之类的预测时:

["the quick brown fox jumps over the lazy dog"]
["hi what is up"]

外壳带有此错误返回:

{
  "error": "Prediction failed: Exception during sklearn prediction: 
  'numpy.ndarray' object has no attribute 'lower'"
}

这里可能出了什么问题?

这可能是依赖关系的问题,我也必须在我的Google寄托模型中安装BS4,LXML和NLTK的软件包?

还是我的输入JSON格式不正确?

感谢您的帮助。

好吧,我发现确实对JSON格式进行了错误的格式。(在https://stackoverflow.com/a/51693619/10570541上回答(

正式文档指出,JSON格式具有新线和方括号可以分开的实例,例如:

[6.8,  2.8,  4.8,  1.4]
[6.0,  3.4,  4.5,  1.6]

如果您有多个输入变量,则适用。

仅对于一个输入变量,只需使用newlines即可。

"the quick brown fox jumps over the lazy dog"
"alright it works"

相关内容

  • 没有找到相关文章

最新更新