Java调用Python语言及第三方Python库

article/2025/4/21 10:49:53

#pic_center =400x
系列文章:


文章目录


1、导入依赖

<!--Python&Java--><dependency><groupId>org.python</groupId><artifactId>jython-standalone</artifactId><version>2.7.2</version></dependency>

2、在java中直接执行python代码片段
通过上面这种方式执行python代码片段,实际上是通过Jpython来实现的,这种方式能执行的python代码片段比较有限,都是一些最原始的python命令,很多包不能用,例如执行pythonInterpreter.exec(“import pandas as pd”); 都会报错。所以这种方式一般不推荐

package com.song.mywj.py;import org.python.util.PythonInterpreter;import java.io.IOException;public class TestPy {public static void main(String[] args) throws IOException, InterruptedException {Mytest();}public static void Mytest () throws IOException, InterruptedException {Process proc = Runtime.getRuntime().exec("python  E:\\code\\deeplea\\pytorchlearn\\learn\\plt\\test.py");proc.waitFor();PythonInterpreter interpreter = new PythonInterpreter();interpreter.exec("a=[5,2,3,9,4,0]; ");interpreter.exec("print(sorted(a));");  //此处python语句是3.x版本的语法interpreter.exec("print sorted(a);");   //此处是python语句是2.x版本的语法}

Java调用Python程序方法总结

3、通过Runtime.getRuntime().exec()方法来执行python脚本

package com.song.mywj.py;import java.io.IOException;public class TestPy {public static void main(String[] args) throws IOException, InterruptedException {Mytest();}public static void Mytest () throws IOException, InterruptedException {Process proc ;String compiler = "D:\\devementtool\\Anaconda3-202105\\python.exe";String rootPath = "E:\\code\\deeplea\\pytorchlearn\\learn\\plt\\";String program = "test.py";String commond = compiler+" "+rootPath+program;proc = Runtime.getRuntime().exec(commond);proc.waitFor();}
}

原python脚本

# 导入功能包,产生数据
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as smnsample = 20 # 20个样本点
x = np.linspace(0,10,nsample) # 从0到20之间选择20个数(等距)
print(x)# 加一列1,为了与常数项进行组合
X = sm.add_constant(x)
print(X)
# 产生β0与β1(真实情况)
beta = np.array([2,5])
print(beta)
# 误差项(设置抖动,为了让数据更真实)
e = np.random.normal(size=nsample)
print(e)
# 实际值y
y = np.dot(X,beta) + e
print(y)
# 最小二乘法
model = sm.OLS(y,X)
# 拟合数据
res = model.fit()
# 计算的回归系数β0和β1
print(res.params)
# 产生全部结果
res.summary()
# 拟合的估计值
y_ = res.fittedvalues
print(y_)
# 拟合的估计值
y_ = res.fittedvalues
print(y_)
fig, ax = plt.subplots(figsize=(8,6))
ax.plot(x,y,'o',label='data') # 原始数据
ax.plot(x,y_,'r--',label='test') # 拟合数据
ax.legend(loc='best')
plt.show()

在java中调用python程序

java调用外部程序(Runtime.getRuntime().exec)详解

    @Testvoid contextLoads() {Process proc;try {/*附加:String[] args1=new String[]{"/home/huan/anaconda2/bin/python","/home/huan/myfile/pythonfile/helloword.py"};Process pr=Runtime.getRuntime().exec(args1);String数组里的那一行很重要首先一定要设置好你所使用的python的位置,切记不要直接使用python,因为系统会默认使用自带的python,所以一定要设置好你所使用的python的位置,否则可能会出现意想不到的问题(比如说我使用的是anaconda中的python,而ubuntu系统会默认调用自带的python,而我自带的python中并没有numpy库,所以会造成相应的代码不会执行的问题,所以设置好python的位置是很重要的)。还有就是要设置好py文件的位置,使用绝对路径。在这里插入代码片还有就是可以看出,此方法可以满足我们python代码中调用第三方库的情况,简单实用。*/
//        	 pythone执行环境String pyEnv = "D:\\devementtool\\Anaconda3-202105\\python.exe";
//        	要执行的py代码String program = "E:\\code\\deeplea\\pytorchlearn\\shiyan\\single\\test.py";String a="aa";String b="bb";
//        	参数集合String[] args = new String[] {pyEnv, program,a,b,"呵呵呵"};proc = Runtime.getRuntime().exec(args);
//            输出到控制台有中文,使用utf-8还是乱码 , 使用GBK就可以BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream(),"GBK"));String line = null;while ((line = in.readLine()) != null) {System.out.println(line);}in.close();proc.waitFor();} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}
# coding:utf-8
import numpy as np
import sys
# E:\code\deeplea\pytorchlearn\shiyan\single\test.py
if __name__ == '__main__':a = np.ones(3)print(a)print('恭喜您!java调用python代码成功')print('脚本名为:%s' % (sys.argv[0]))print('传入的参数为:')for i in range(1, len(sys.argv)):print('参数:%s' % (sys.argv[i]))

在这里插入图片描述
【Java】使用Java调用Python的四种方法


http://chatgpt.dhexx.cn/article/Sb3KdTNO.shtml

相关文章

Python 代码托管到码云平台,原来这么简单

什么是代码托管&#xff1f;代码托管又有什么好处&#xff1f; 场景1&#xff1a;我有2个电脑&#xff0c;公司一台&#xff0c;家里一台。我想在两台电脑上都进行同步开发。这时候我只要git push/pull一下就能够同步了&#xff0c;不再需要用U盘拷来拷去 场景2&#xff1a;我…

Python游戏开发-超级海盗!!!

开发环境配置 安装python环境后&#xff0c;下载pygame模块&#xff0c;使用如下命令 pip install pygame 注&#xff1a;该项目使用了一些新特性&#xff0c;使用3.10以上的版本 游戏项目介绍 游戏分为两个模块&#xff0c;分别是编辑模块和关卡模块&#xff0c;在编辑模…

chatgpt赋能python:Python编译成Java字节码:一个全新的可能性

Python编译成Java字节码&#xff1a;一个全新的可能性 Python作为一种高级编程语言&#xff0c;有其独特的优点和特点&#xff0c;被广泛应用于各个领域。然而&#xff0c;随着Python在企业级应用中的广泛应用&#xff0c;性能和安全等方面的问题也越来越凸显出来。这时&#…

鲲鹏法(一)python环境搭建

简单总结一下python的开发环境&#xff08;偏科学计算一些&#xff09;&#xff0c;Pycharm等之后再补了 python环境搭建 一.Python二.IPython三.Jupyter1.Jupyder QtConsole(了解即可)2.Jupyder Notebook3.Jupyder Lab4.单元类型5.编辑单元6.Markdown单元7.输出显示8.nbconver…

【预测模型-ELM预测】基于原子搜索算法优化极限学习机预测matlab代码

​1 简介 针对变压器故障的特征,结合变压器油中气体分析法以及三比值法.提出了基于原子搜索算法改进极限学习机的故障诊断方法.由于输入层与隐含层的权值和阈值是随机产生.传统的极限学习机可能会使隐含层节点过多,训练过程中容易产生过拟合现象.该方法运用原子搜索算法对极限…

ELMo模型解读

在反复的看了ELMo源码和参考网上各路大神的经验之后&#xff0c;终于对ELMo的架构有了比较清楚的认识。总结一下自己对ELMo的理解&#xff0c;其实还有很多细节没有搞清楚。 一.模型架构 下面是我画的一个架构简图&#xff0c;对于ELMo不管你输入的是词还是字符&#xff0c;它…

【预测模型】基于粒子群算法PSO优化极限学习机ELM实现数据预测matlab源码

1 模型 为了提高空气质量预测精度,提出一种基于粒子群算法优化极限学习机的空气质量预测模型.运用粒子群算法优化极限学习机的初始权值和偏置,在保证预测误差最小的情况下实现空气质量最优预测.选择平均绝对百分比误差,均方根误差和平均绝对误差作为评价指标,通过PSO-ELM和ELM…

多元分类预测 | Matlab麻雀算法(SSA)优化极限学习机(ELM)的分类预测,多特征输入模型。SSA-ELM分类预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 麻雀算法(SSA)优化极限学习机(ELM)的分类预测,多特征输入模型。SSA-ELM分类预测模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程序可出分类效果图,迭代…

多元分类预测 | Matlab粒子群算法(PSO)优化极限学习机(ELM)的分类预测,多特征输入模型。PSO-ELM分类预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab粒子群算法(PSO)优化极限学习机(ELM)的分类预测,多特征输入模型。PSO-ELM分类预测模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,…

【预测模型-ELM分类】基于极限学习机ELM+OSELM+KELM+半监督SSELM+USELM实现数据集分类附matlab代码

1 内容介绍 极限学习机是由黄广斌等&#xff3b;13&#xff3d;提出的一种针对前馈神经网络设计的机器学习算法。该算法结构简单、计算速率快。ELM的关键在于找到输出和输出之间的映射空间。首先确定隐含层之间的连接权值w和隐含层神经元的偏置b。选择一个无限可微的函数作为隐…

多元分类预测 | Matlab鲸鱼算法(WOA)优化极限学习机(ELM)的分类预测,多特征输入模型。WOA-ELM分类预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab鲸鱼算法(WOA)优化极限学习机(ELM)的分类预测,多特征输入模型。WOA-ELM分类预测模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程…

【ELM数据预测】基于matlab粒子群算法优化ELM数据预测(含前后对比)【含Matlab源码 449期】

✅博主简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;Matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;海神之光 &#x1f3c6;代码获取方式&#xff1a; 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭&#xff1a;…

elmo模型详解

elmo模型结构 如下所示是elmo模型结构图&#xff1a; 在输入中可以采用worc2vec模型 训练的词向量。 其实总的来说&#xff0c;elmo模型就是若干bilstm的堆积&#xff0c;然后训练得到的&#xff0c; 对于某一个单词[公式]&#xff0c;一个L层的双向语言模型biLM由2L1个向量表…

多元分类预测 | Matlab灰狼算法(GWO)优化极限学习机(ELM)的分类预测,多特征输入模型。GWO-ELM分类预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | 灰狼算法(GWO)优化极限学习机(ELM)的分类预测,多特征输入模型。GWO-ELM分类预测模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程序可出…

ELMo模型简介

word2vec是一种静态词嵌入方法&#xff0c;它不会随着上下文场景的变化而变化。但一词多义在现实中太常见了&#xff0c;因此这种静态嵌入的局限性在很多场景显得力不从心。而ELMo就是为解决这些问题提出的&#xff0c;它的提出意味着从词嵌入(Word Embedding)时代进入了语境词…

【ELM回归预测】基于matlab粒子群算法优化ELM回归预测【含Matlab源码 1722期】

✅博主简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;Matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;海神之光 &#x1f3c6;代码获取方式&#xff1a; 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭&#xff1a;…

【预测模型】基于 Elm神经网络的电力负荷预测模型matlab源码

1. 算法概述 **\ ELM算法针对的问题是单隐层的前馈神经网络(single-hidden layer feedforward neural networks&#xff0c;SLFNs)&#xff0c;算法特点在于输入层到隐层的权重W和偏差B可以随机设定&#xff0c;隐层激励函数具有无限可微的特征即可(常用的有radial basis、sine…

【预测模型-ElM分类】基于松鼠算法优化ElM神经网络实现数据分类附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

模型学习 - ELM

本学弱喜欢在本子上记笔记&#xff0c;但字迹又丑。 望看不懂我的字的大佬不要喷我&#xff0c;看得懂的大佬批评指正。

【预测模型-ELM预测】基于蚁群算法优化极限学习机预测matlab代码

1 简介 针对变压器故障的特征,结合变压器油中气体分析法以及三比值法.提出了基于蚁群算法改进极限学习机的故障诊断方法.由于输入层与隐含层的权值和阈值是随机产生.传统的极限学习机可能会使隐含层节点过多,训练过程中容易产生过拟合现象.该方法运用蚁群算法对极限学习机的输…