当前需求:
Web后端基于Java语言编写,后端中的计算模块产生的计算结果是机器学习模型的参数。
(1)Java后端向python模型传递参数
(2)python模型接收参数,生成分类结果值
(3)python模型将分类结果值返回给Java后端
一.生成pkl文件
注意版本问题,默认生成为python3文件
#使用joblib.dump方法将模型保存到文件
import joblib
joblib.dump(rfc,'model_joblib.pkl')
print('模型导出文件成功!')复制
如果想得到python2版本的话:
#使用joblib.dump方法将模型保存到文件
import joblib
joblib.dump(rfc,'model_joblib.pkl',protocol=2)
print('模型导出文件成功!')
复制
二.创建Flask项目
通过pycharm傻瓜式操作即可。
三.Flask部分核心代码
import joblib
import numpy as np
from flask import Flask,request,jsonify
import pickle
import pandas as pd
import sklearn
app = Flask(__name__)
# 加载机器学习模型
model = joblib.load('/data/workarea/PythonArea/xxxProject/xxxtic/model_joblib.pkl')
@app.route('/classify',methods=['POST'])
def predict():
# Get the input data from the request
input_data = request.get_json()
# Convert the input data to a numpy array
input_array = np.array(input_data['input'])
# Make the prediction using the model
prediction = model.predict(input_array.reshape(1, -1))
# Return the prediction as a JSON response
response = {
'prediction': prediction[0]
}
return jsonify(response)
if __name__ == '__main__':
app.run()
复制
试运行项目,并通过ApiPost工具对接口进行测试
那么python这部分的服务到这里就完成了。接下来的工作就是在Java后端中传递参数并获得结果。
四.Java后端请求分类结果
package com.githan.utils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* @author han56
* @description 功能描述:调用python机器学习模型
* @create 2023/4/13 上午9:30
*/
public class UseDecisionModel {
public static void main(String[] args) {
try {
// 创建连接
URL url = new URL("http://127.0.0.1:5000/classify");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Accept-Encoding", "UTF-8");
// 构建请求参数
JSONObject requestParams = new JSONObject();
JSONArray jsonArray = new JSONArray();
jsonArray.add(1.0);jsonArray.add(1.34);jsonArray.add(65150.70672);
requestParams.put("input",jsonArray);
// 发送请求
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
writer.write(requestParams.toString());
writer.flush();
writer.close();
// 获取响应
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
// 打印响应
JSONObject res = JSONObject.parseObject(response.toString());
System.out.println(res);
} catch (Exception e) {
e.printStackTrace();
}
}
}
复制
这样就基本完成了Java后端与Python项目之间的互通了,这样实现的好处就是不受版本限制,在python中版本不同还是很坑的。缺点:效率偏低等。
文章转载自码农智涵的程序人生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle 发布 Java 24
通讯员
129次阅读
2025-03-19 10:08:51
演讲实录|分布式 Python 计算服务 MaxFrame 介绍及场景应用方案
阿里云大数据AI技术
111次阅读
2025-03-17 13:27:37
Oracle 正式发布 Java 24
千钧
89次阅读
2025-03-20 11:26:28
mysql提升10倍count(*)的神器
大大刺猬
84次阅读
2025-03-21 16:54:21
DolphinDB 在深度学习中的应用:股票实时波动率预测
DolphinDB
55次阅读
2025-03-20 10:44:13
云上一键部署通义千问 QwQ-32B 模型,阿里云 PAI 最佳实践
阿里云大数据AI技术
51次阅读
2025-03-11 11:50:17
[MYSQL] query_id和STATEMENT_ID在不同OS上的关系
大大刺猬
48次阅读
2025-03-26 19:08:13
DataWorks :Data+AI 一体化开发实战图谱
阿里云大数据AI技术
40次阅读
2025-03-19 11:00:55
自动化办公:利用Python和DeepSeek API高效制作Word文档(附源码)
数据库平台优化
36次阅读
2025-03-06 09:27:00
国密算法介绍
漫步者
34次阅读
2025-03-21 09:20:39