#java #python #numpy #sockets
#java #python #numpy #сокеты
Вопрос:
В принципе, я хочу отправить выходные данные классификатора дерева решений через сокет и получить выходные данные на java. Я хочу предсказать болезнь по симптомам. Я отправлю свой образец тестового вектора симптомов из java через сокет и хочу получить прогнозируемое заболевание из python.
`dt = DecisionTreeClassifier()
clf_dt=dt.fit(x,y)
output=clf_dt.predict(sym)
print(output) #prints ['Fungal infection']`
Теперь я хочу отправить эту «Грибковую инфекцию» через сокет и получить ее на java.
`data_string = pickle.dumps(output)
s = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
s.bind(("localhost",9000))
s.listen(10)
connection, address = s.accept()
message = connection.recv(1024)
print ("Got: {0}".format(message))
connection.send(data_string) #PROBLEM is here.I can't retrieve this in
java
connection.close()`
Спасибо…
Комментарии:
1.
pickle
Строка — это формат, специфичный для Python. Маловероятно, что вы сможете использовать его в Java, хотя, возможно, сможете сохранить его и отправить обратно в Python для чтения с помощьюpickle
. В противном случае вам нужно будет определить формат, который можно использовать с обеих сторон.2. На самом деле я хотел преобразовать его в строку. Но tostring() также не работает. Когда я использовал conn.send(str.encode(output.tostring())), он также не работал, говоря, что объект ‘str’ является reqd. но он получает «байты»
3. Да, если вы проверите документы,
tostring
создается байтовая строка. Может помочь, если вы приведете наглядный пример того, как массив должен выглядеть с обоих концов.
Ответ №1:
Я решил это сам. tostring() возвращает байты. np.array2string(x) вернул мне объект str, который я могу передать через сокет