我不能用joblib和pi将ML模型加载到Flask中

2024-04-26 11:15:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我面临着一个问题,将ML模型(ML模型)装入烧瓶。 我试过两个库joblib和pickle都生成相同的错误

model = pickle.load(f)
  File "sklearn\tree\_tree.pyx", line 606, in sklearn.tree._tree.Tree.__cinit__
ValueError: Buffer dtype mismatch, expected 'SIZE_t' but got 'long long'

这是我的烧瓶应用程序

# all necessary libraries are imported 

# Use pickle to load in the pre-trained model.
with open(f'model/model_2.pkl', 'rb') as f:
    model = pickle.load(f)

# model = load('model/model.joblib')

app = flask.Flask(__name__, template_folder='templates')

我的Jubyter笔记本:

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
import numpy as nm
import pandas as pd
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix

df =  pd.read_csv('phishing _urls_v2.csv')
columns = ['No_of_dots','Length_of_host','contains (exe)','redirect (//)',]
labels = df['malicious'].values
features_2 = df[list(columns)].values
X_train_2, X_test_2, y_train_2, y_test_2 = train_test_split(features_2, labels, test_size=0.30)
model = RandomForestClassifier(n_estimators=52)
model.fit(X_train_2,y_train_2)
model_predict_2 =model.predict(X_test_2)
accuracy = confusion_matrix(y_test_2, model_predict_2)
print (accuracy)

from joblib import dump, load
dump(model, 'model.joblib') 

import pickle
pickle.dump(model, open('model_2.pkl','wb'))

我把模型放在Jubyter笔记本上,效果非常好

model = pickle.load(open('model_2.pkl','rb'))
print(model.predict([[1,10,0,0]]))
[0]

我搞不懂这个问题。你知道吗


Tags: from模型testimporttreemodelasload
1条回答
网友
1楼 · 发布于 2024-04-26 11:15:52

谢谢梅奥斯滕的提示。 问题是Jubyter笔记本中使用的python版本是32位的,而Pycharm中使用的是64位的。你知道吗

要验证,请使用此命令

import ctypes
print (ctypes.sizeof(ctypes.c_voidp))

# 8 for 64bit and 4 for 32bit

相关问题 更多 >