簡體   English   中英

ModuleNotFoundError:沒有名為“sklearn.tree.tree”的模塊

[英]ModuleNotFoundError: No module named 'sklearn.tree.tree'

我正在嘗試學習如何使用 Flask 創建機器學習 API,但是,按照本教程,當我鍵入命令python app.py時出現以下錯誤:

Traceback (most recent call last):   
File "C:\Users\Breno\Desktop\flask-api\app.py", line 24, in <module>
        model = p.load(open(modelfile, 'rb'))
ModuleNotFoundError: No module named 'sklearn.tree.tree'

我的代碼:

from flask import Flask, request, redirect, url_for, flash, jsonify
import numpy as np
import pickle as p
import pandas as pd
import json
#from sklearn.tree import DecisionTreeClassifier

app = Flask(__name__)


@app.route('/api/', methods=['POST'])
def makecalc():
    j_data = request.get_json()

    prediction = np.array2string(model.predict(j_data))

    return jsonify(prediction)


if __name__ == '__main__':

    modelfile = 'models/final_prediction.pickle'    

    model = p.load(open(modelfile, 'rb'))

    app.run(debug=True,host='0.0.0.0')

有人可以幫我嗎?

泡菜不一定在 scikit-learn 版本之間兼容,因此這種行為是預期的(並且不支持用例)。 有關更多詳細信息,請參閱https://scikit-learn.org/dev/modules/model_persistence.html#model-persistence 用 joblib 替換 pickle。 例如:

>>> from sklearn import svm
>>> from sklearn import datasets
>>> clf = svm.SVC()
>>> X, y= datasets.load_iris(return_X_y=True)
>>> clf.fit(X, y)
SVC()

>>> from joblib import dump, load
>>> dump(clf, open('filename.joblib','wb'))
>>> clf2 = load(open('filename.joblib','rb'))
>>> clf2.predict(X[0:1])
array([0])
>>> y[0]
0

對於遇到此問題的任何人(可能處理很久以前編寫的代碼), sklearn.tree.tree現在位於sklearn.tree下(從v0.24 )。 從導入錯誤警告中可以看出:

from sklearn.tree.tree import BaseDecisionTree
/usr/local/lib/python3.7/dist-packages/sklearn/utils/deprecation.py:144: FutureWarning: The sklearn.tree.tree module is  deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.tree. Anything that cannot be imported from sklearn.tree is now part of the private API.
  warnings.warn(message, FutureWarning)

相反,使用:

from sklearn.tree import BaseDecisionTree

問題在於sklearn的版本。 模塊sklearn.tree.tree自版本0.24以來已被刪除。 很可能,您的 model 是使用舊版本生成的。 嘗試安裝舊版本的 sklearn:

pip uninstall scikit-learn
pip install scikit-learn==0.20.4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM