Java调用python机器学习代码

import sys
if __name__ == "\_\_main\_\_":
    if len(sys.argv) < 4:
        print("Please provide function name and two numbers to sum")
    else:
        function_name = sys.argv[1]
        if function_name == "calculate\_comprehensive\_index":
            model_path = sys.argv[2]
            num1 = int(sys.argv[3])
            result = calculate_comprehensive_index(model_path, num1)
            print(result)
        else:
            print("Function not found: " + function_name)

2、方式二http协议方式

方式一也挺好用的,但是方式一也确实存在一些弊端,因为我这次调的python不是一小小的python,而是机器学习,对于python工程师来时,虽然把一些模型都封装了,用的时候也方便,如下,加载模型

from joblib import load
load(modelPath)

模型小则几十M,大则百兆甚至更大,load(modelPath),可想而知,从磁盘读取一个这么大的文件,而且需要频繁的计算,先优化一下,Java的思想,可以把这个加载过程放到静态块中不就可以了?没错,这个思路是对的,而且对于python来说,直接放在全局位置就可以了,就可以避免多次加载模型,但是对于方式一来所,每次调用命令,都是从磁盘找到python脚本,加载指定位置的模型,这速度相当的慢,频繁的数据计算,系统一会儿就阻塞了。所以不得不出现了这个第二种方式,简单来说就是把python做成服务,而且开放接口,供Java调用,这个速度相比第一种快的不要太多。使用的是Flask。
1、首先安装

pip install flask

2、创建一个 python 脚本,命名为 app.py,并编写以下内容:

from flask import Flask, request, jsonify
from joblib import load
app = Flask(__name__)
# 加载模型
model_path = "path\_to\_your\_model\_file.joblib"
model = load(model_path)
# 定义 API 路由
@app.route('/predict', methods=['POST'])
def predict():
    try:
        # 获取 POST 请求中的数据
        data = request.json
        # 使用模型进行预测
        prediction = model.predict(data)
        # 返回预测结果
        return jsonify({'prediction': prediction.tolist()}), 200
    except Exception as e:
        return jsonify({'error': str(e)}), 500
if __name__ == '\_\_main\_\_':
    app.run(debug=True)

在上面的代码中,我们定义了一个路由 /predict,它接受 POST 请求并调用模型进行预测。预测结果以 JSON 格式返回给客户端
3、运行 Flask 应用程序

python app.py

4、关闭日志输出,如果你需要的话

import logging
app = Flask(__name__)
# 获取Flask应用程序的根日志记录器
log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)  # 设置日志级别为ERROR,忽略所有INFO级别的日志
# 关闭Flask应用程序的日志处理器,以禁用所有日志输出
for handler in log.handlers[:]:
    log.removeHandler(handler)
# 为Flask应用程序添加一个空的日志处理器,确保没有日志会被输出
log.addHandler(logging.NullHandler())

三、Linux安装python

系统 CentOS Linux release 7.9.2009 (Core)

#安装必要开发工具和库文件以便进行编译和构建需要这些依赖的软件
yum install gcc openssl openssl-devel make automake autoconf gcc-c++ bzip2-devel sqlite-devel
#通过安装 epel-release-latest-7.noarch.rpm,你可以扩展你的系统的软件源,获得更多可用的软件选择,从而更方便地满足你的软件需求
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
#很多python库和框架在安装或构建过程中需要依赖OpenSSL这个库,特别是一些涉及到加密、安全通信或网络操作的库
yum install openssl11-devel
#在文件 configure 中查找所有出现的PKG\_CONFIG openssl 字符串,并将其替换为PKG\_CONFIG openssl11
sed -i 's/PKG\_CONFIG openssl /PKG\_CONFIG openssl11 /g' configure
#下载Python安装包,进入安装包之后,执行下面的配置prefix的安装位置
./configure --prefix=/usr/local/python
#把旧版本python备份
mv /usr/bin/python /usr/bin/python2.7.bak
#建立软链接
 **自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/36e05bcc012138c94dbe0c815c52cbd1.png)

![img](https://img-blog.csdnimg.cn/img_convert/b13e0b4479e1dcc7ee0ff3b7b82e8517.png)

![img](https://img-blog.csdnimg.cn/img_convert/641eca82204f891aacabcf8dd0095a13.png)

![img](https://img-blog.csdnimg.cn/img_convert/b4d724256474573ec95afd7213a97383.png)

![img](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

![img](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)**

盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)**

![](https://img-blog.csdnimg.cn/img_convert/fdeba91e995e47cb7e4b23fdabe46523.jpeg)
  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值