我需要通过 C 中的 pickle 文件加载 sklearn 模型。但我不知道如何做到这一点。这是我的代码和我的模型:
import pandas
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
import pickle
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:, 0:8]
Y = array[:, 8]
test_size = 0.33
seed = 7
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed)
# Fit the model on 33%
model = LogisticRegression()
model.fit(X_train, Y_train)
print(model.score(X_test, Y_test))
# save the model to disk
filename = 'finalized_model.sav'
pickle.dump(model, open(filename, 'wb'))
我不知道该怎么做。如果您能帮助我,我将不胜感激。
最佳答案
总有解决方法,其中一种方法可能是
在 Python 代码上编写基于 Python Flask 的 API/微服务,并使用 LibCurl 库在 C 中调用它。我假设您的 test_data 将是单列 csv 文件,所有 Flask 应用程序默认在 localhost:5000 上运行。如果您的数据看起来不像这样,我建议您编写自己的应用程序,并带有适当的参数请求。这段代码仅供引用。
#python flask code
from flask import Flask
app = Flask(__name__)
@app.route('/')
def your_model():
test_data = pandas.read_csv('test_data.csv')
model = pickle.load("your_model.pkl")
pred_result = model.predict(test_data)
return(pred_result)
app.run()
/* c code*/
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "http://localhost:5000/your_API_name");
struct curl_slist *headers = NULL;
test_data_as_json_string = {""};
headers = curl_slist_append(headers, "any_parameter: value");
headers = curl_slist_append(headers, "content-type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, test_data_as_json_string);
CURLcode ret = curl_easy_perform(hnd);
此代码也可供引用,编写您自己的 C 代码,或者您可以在运行 Flask api 时从 Postman 的代码部分复制粘贴类似的代码。
关于c - 如何在c中加载包含机器学习的pickle文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56198491/