任务:Java调用python文件,向java传数组,在python中做预测处理,最终获取python返回的值,传回java中
1、java代码
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class test {
public static String coalType_list(List<Integer> list_one) {
String arr = null;
try {
String sysPython = "F:\\python3.9\\python.exe ";
String filePython = "E:\\py\\py.py ";
Process proc = Runtime.getRuntime().exec(sysPython + filePython + list_one);
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
arr = line;
}
in.close();
proc.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return arr;
}
public static void main(String[] args) throws Exception {
List<Integer> list_one = new ArrayList<>();
list_one.add(1114);
list_one.add(1392152);
list_one.add(104);
list_one.add(1985);
list_one.add(1596);
list_one.add(2305000);
list_one.add(161);
list_one.add(2004);
list_one.add(1864);
list_one.add(2580000);
list_one.add(375);
list_one.add(2015);
String flag = gitar.coalType_list(list_one);
System.out.println(flag);
}
}
2、python代码
import numpy as np
import pandas as pd
from sklearn import linear_model
import sys as ss
def Data_input():
list_int = []
for i in range(1, len(ss.argv)):
temp_1 = ss.argv[i].replace(",","")
temp_2 = temp_1.replace("[","")
temp = temp_2.replace("]","")
list_int.append(int(temp))
return list_int
def Data_pro(list_int,n,year):
data = []
for i in range(0,len(list_int),n):
data_temp = []
for j in range(n):
data_temp.append(list_int[i+j])
data.append(data_temp)
data_temp = np.array(data)
train = pd.DataFrame(data_temp)
train.columns = ['野生','栖息地','圈养','年份']
dict = {'野生':0, '栖息地':0, '圈养': 0, '年份':year}
test = pd.DataFrame(dict,index=[0])
return train,test
def Algorithm(train,test):
x_train = train.iloc[:, 3:4].values
y_train_1 = train.iloc[:, 0:1].values
y_train_2 = train.iloc[:, 1:2].values
y_train_3 = train.iloc[:, 2:3].values
x_test = test.iloc[:, 3:4].values
model = linear_model.LinearRegression()
model_1 = model.fit(x_train, y_train_1)
pre_1 = model_1.predict(x_test)
model_2 = model.fit(x_train, y_train_2)
pre_2 = model_2.predict(x_test)
model_3 = model.fit(x_train, y_train_3)
pre_3 = model_3.predict(x_test)
result = [int(pre_1),int(pre_2),int(pre_3),test["年份"][0]]
return result
def main():
list_int = []
list_int = Data_input()
n = 4
year = 2030
train,test = Data_pro(list_int,n,year)
result = Algorithm(train,test)
print(result)
if __name__ == '__main__':
main()
3、结果

4、B站演示视频链接
B站演示视频