Чтение модели PMML в Android вызывает исключениеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Чтение модели PMML в Android вызывает исключение

Сообщение Anonymous »

Существует модель .PMML: random_forest.pmml, созданная с помощью этих кодов Python в colab:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn2pmml import PMMLPipeline
from sklearn2pmml import sklearn2pmml

# Load dataset
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Train model
clf = RandomForestClassifier(n_estimators=100)
clf.fit(X_train, y_train)

# Create a PMML pipeline
pipeline = PMMLPipeline([("classifier", clf)])

# Save the model to PMML
sklearn2pmml(pipeline, "random_forest.pmml")

Я хочу использовать эту модель в проекте Android, используя эту библиотеку:
https://github.com/jpmml/jpmml -оценщик/дерево/мастер
implementation 'org.jpmml:pmml-evaluator-metro:1.6.5'

и реализация:
val inputStream: InputStream = assets.open("random_forest.pmml")
val modelEvaluator = LoadingModelEvaluatorBuilder()
.load(inputStream)
.build()
modelEvaluator?.verify()

Но в начале сборки modelEvaluator выдает исключение:
FATAL EXCEPTION: main
Process: com.example.testapplication, PID: 30485
java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/Image;
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeBuiltinLeafInfoImpl.(RuntimeBuiltinLeafInfoImpl.java:337)
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeTypeInfoSetImpl.(RuntimeTypeInfoSetImpl.java:31)
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:91)
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:46)
at org.glassfish.jaxb.runtime.v2.model.impl.ModelBuilder.(ModelBuilder.java:119)
at org.glassfish.jaxb.runtime.v2.model.impl.RuntimeModelBuilder.(RuntimeModelBuilder.java:55)
at org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:403)
at org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:251)
at org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:77)
at org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1111)
at org.glassfish.jaxb.runtime.v2.ContextFactory.createContext(ContextFactory.java:140)
at java.lang.reflect.Method.invoke(Native Method)
at jakarta.xml.bind.ContextFinder.newInstance(ContextFinder.java:274)
at jakarta.xml.bind.ContextFinder.newInstance(ContextFinder.java:263)
at jakarta.xml.bind.ContextFinder.find(ContextFinder.java:395)
at jakarta.xml.bind.JAXBContext.newInstance(JAXBContext.java:691)
at jakarta.xml.bind.JAXBContext.newInstance(JAXBContext.java:632)
at org.jpmml.model.JAXBUtil.getContext(JAXBUtil.java:107)
at org.jpmml.evaluator.LoadingModelEvaluatorBuilder.load(LoadingModelEvaluatorBuilder.java:151)
at org.jpmml.evaluator.LoadingModelEvaluatorBuilder.load(LoadingModelEvaluatorBuilder.java:138)
at com.example.testapplication.MainActivity.createEvaluator(MainActivity.kt:90)
at com.example.testapplication.MainActivity.getCategory(MainActivity.kt:29)
at com.example.testapplication.MainActivity.onCreate(MainActivity.kt:23)
at android.app.Activity.performCreate(Activity.java:7009)
at android.app.Activity.performCreate(Activity.java:7000)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)


Подробнее здесь: https://stackoverflow.com/questions/789 ... -exception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»