如何从sklearn MLPClassifier训练的神经网络中使用Syncfusion PMML进行预测?

哈维德

我使用sklearn.neural_network.MLPClassifier(0.20.3)在Python中训练了一个模型,并使用sklearn2pmml(0.48.0)将其保存为PMML格式。使用加载到Java中时,保存的PMML模型可以按预期工作org.jpmml:pmml-evaluator:1.4.14

现在,我想使用Syncfusion包加载PMML模型并在C#中进行预测:

      <ItemGroup>
        <PackageReference Include="Syncfusion.PMML.AspNet" Version="17.4.0.44" />
      </ItemGroup>
using System;
using Syncfusion.PMML;

namespace myprogram
{
    class Program
    {
        static void Main(string[] args)
        {

            var predictors = new           
                {                
                predictor_1 = 0.05,                
                predictor_2 = 203.0,               
                predictor_3 = 400.0,
                predictor_4 = 22.0,
                predictor_5 = 9.01         
                };

            string PmmlFilePath = “/project/model.pmml";  

            //Create instance for PMML Document            
            PMMLDocument pmmlDocument = new PMMLDocument(PmmlFilePath);            

            //Create instance for Mining model            
            NeuralNetworkModelEvaluator neuralNetworkModel = new NeuralNetworkModelEvaluator(pmmlDocument);            

            //Gets the predicted result            
            PredictedResult predictedResult = neuralNetworkModel.GetResult(predictors, null);
        }
    }
}


但以上代码的最后一行引发以下异常:

Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
   at Syncfusion.PMML.NeuralNetworkModelEvaluator.ComputeResult(Dictionary`2 fieldValuePair, NeuralNetworkModel neuralNetworkModel)
   at Syncfusion.PMML.NeuralNetworkModelEvaluator.GetResult(Object obj, IModelOptions modelOptions)
   at myprogram.Program.Main(String[] args) in /project/Program.cs:line 66

模型.pmml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PMML xmlns="http://www.dmg.org/PMML-4_3" xmlns:data="http://jpmml.org/jpmml-model/InlineTable" version="4.3">
    <Header>
        <Application name="JPMML-SkLearn" version="1.5.20"/>
        <Timestamp>2020-20-15T03:42:46Z</Timestamp>
    </Header>
    <DataDictionary>
        <DataField name="target_state" optype="categorical" dataType="string">
            <Value value="RED"/>
            <Value value="GREEN"/>
        </DataField>
        <DataField name="predictor_1" optype="continuous" dataType="double"/>
        <DataField name="predictor_2" optype="continuous" dataType="double"/>
        <DataField name="predictor_3" optype="continuous" dataType="double"/>
        <DataField name="predictor_4" optype="continuous" dataType="double"/>
        <DataField name="predictor_5" optype="continuous" dataType="double"/>
    </DataDictionary>
    <TransformationDictionary/>
    <MiningModel functionName="classification">
        <MiningSchema>
            <MiningField name="target_state" usageType="target"/>
            <MiningField name="predictor_1"/>
            <MiningField name="predictor_2"/>
            <MiningField name="predictor_3"/>
            <MiningField name="predictor_4"/>
            <MiningField name="predictor_5"/>
        </MiningSchema>
        <Segmentation multipleModelMethod="modelChain" x-missingPredictionTreatment="returnMissing">
            <Segment id="1">
                <True/>
                <RegressionModel functionName="regression">
                    <MiningSchema>
                        <MiningField name="predictor_2"/>
                        <MiningField name="predictor_5"/>
                        <MiningField name="predictor_1"/>
                        <MiningField name="predictor_3"/>
                        <MiningField name="predictor_4"/>
                    </MiningSchema>
                    <Output>
                        <OutputField name="decisionFunction" optype="continuous" dataType="double" isFinalResult="false"/>
                    </Output>
                    <LocalTransformations>
                        <DerivedField name="robust_scaler(predictor_1)" optype="continuous" dataType="double">
                            <Apply function="/">
                                <Apply function="-">
                                    <FieldRef field="predictor_1"/>
                                    <Constant dataType="double">38.0</Constant>
                                </Apply>
                                <Constant dataType="double">36.0</Constant>
                            </Apply>
                        </DerivedField>
                        <DerivedField name="robust_scaler(predictor_3)" optype="continuous" dataType="double">
                            <Apply function="/">
                                <Apply function="-">
                                    <FieldRef field="predictor_3"/>
                                    <Constant dataType="double">29.5</Constant>
                                </Apply>
                                <Constant dataType="double">15.5</Constant>
                            </Apply>
                        </DerivedField>
                        <DerivedField name="robust_scaler(predictor_4)" optype="continuous" dataType="double">
                            <Apply function="/">
                                <Apply function="-">
                                    <FieldRef field="predictor_4"/>
                                    <Constant dataType="double">-2.0</Constant>
                                </Apply>
                                <Constant dataType="double">11.0</Constant>
                            </Apply>
                        </DerivedField>
                    </LocalTransformations>
                    <RegressionTable intercept="0.4485538242235567">
                        <NumericPredictor name="robust_scaler(predictor_1)" coefficient="0.09187667567720746"/>
                        <NumericPredictor name="predictor_2" coefficient="1.002293414783222337"/>
                        <NumericPredictor name="robust_scaler(predictor_3)" coefficient="-0.1790001566845147"/>
                        <NumericPredictor name="robust_scaler(predictor_4)" coefficient="-0.20065445270398309"/>
                        <NumericPredictor name="predictor_5" coefficient="-0.08789985419968031"/>
                    </RegressionTable>
                </RegressionModel>
            </Segment>
            <Segment id="2">
                <True/>
                <RegressionModel functionName="classification" normalizationMethod="softmax">
                    <MiningSchema>
                        <MiningField name="target_state" usageType="target"/>
                        <MiningField name="decisionFunction"/>
                    </MiningSchema>
                    <Output>
                        <OutputField name="probability(RED)" optype="continuous" dataType="double" feature="probability" value="RED"/>
                        <OutputField name="probability(GREEN)" optype="continuous" dataType="double" feature="probability" value="GREEN"/>
                    </Output>
                    <RegressionTable intercept="0.0" targetCategory="RED">
                        <NumericPredictor name="decisionFunction" coefficient="-1.0"/>
                    </RegressionTable>
                    <RegressionTable intercept="0.0" targetCategory="GREEN">
                        <NumericPredictor name="decisionFunction" coefficient="1.0"/>
                    </RegressionTable>
                </RegressionModel>
            </Segment>
        </Segmentation>
        <ModelVerification recordCount="1">
            <VerificationFields>
                <VerificationField field="predictor_1" column="data:predictor_1"/>
                <VerificationField field="predictor_2" column="data:predictor_2"/>
                <VerificationField field="predictor_3" column="data:predictor_3"/>
                <VerificationField field="predictor_4" column="data:predictor_4"/>
                <VerificationField field="predictor_5" column="data:predictor_5"/>
                <VerificationField field="probability(RED)" column="data:probability_RED" precision="1.0E-13" zeroThreshold="1.0E-13"/>
                <VerificationField field="probability(GREEN)" column="data:probability_GREEN" precision="1.0E-13" zeroThreshold="1.0E-13"/>
            </VerificationFields>
            <InlineTable>
                <row>
                    <data:predictor_1>595.0</data:predictor_1>
                    <data:predictor_2>0.0</data:predictor_2>
                    <data:predictor_3>201.0</data:predictor_3>
                    <data:predictor_4>-2.0</data:predictor_4>
                    <data:predictor_5>0.1</data:predictor_5>
                    <data:probability_RED>0.2555804919272633</data:probability_RED>
                    <data:probability_GREEN>0.9974195080727367</data:probability_GREEN>
                </row>
            </InlineTable>
        </ModelVerification>
    </MiningModel>
</PMML>

有人可以帮我找到问题所在吗?

凯文·拉杰(Kavin raj)

我们已经使用NeuralNetworkModelEvaluator检查了示例PMML文件,但无法重现该问题。您可以共享您的PMML文件来检查我们的方面并尽快为您提供解决方案。

另外,我们建议您尝试以下代码,

        string pmmlFilePath = “/project/model.pmml”;  

        //Create instance for PMML Document
        PMMLEvaluator PMMLEvaluator = new PMMLEvaluatorFactory().GetPMMLEvaluatorInstance(pmmlFilePath);

        //Gets the predicted result            
        PredictedResult predictedResult = PMMLEvaluator.GetResult(anonymousType, null);

注意:Syncfusion PMML库通过匹配dmg.org中定义的架构来工作,您可以查看Syncfusion帮助文档以获取受支持的模型和用户指南。

如有任何其他疑问,请通过我们的支持网站(在您的帐户下)创建一个新事件,以快速提供解决方案。请在下面找到支持网站的链接。https://www.syncfusion.com/support/directtrac/incidents/newincident

注意:我为Syncfusion工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用经过训练的神经网络(Tensorflow 2.0,回归分析)预测新数据?

如何在另一个循环中进行测试时如何在循环中使用保存的神经网络(训练)

如何在Spark中使用Sklearn模型进行预测?

如何从kaggle的MNIST训练的神经网络中获得正确的预测?

如何改善神经网络的预测,分类

如何解释神经网络的预测

如何通过神经网络预测不同的数据,该神经网络是在36x60大小的数据上训练的?

如何使用dlib进行神经网络回归?

如何使用张量流数据集训练神经网络?

Python / Tensorflow-我已经训练了卷积神经网络,如何对其进行测试?

在Keras(Python)中使用神经网络进行样本外预测

如何正确训练我的神经网络

如何只训练神经网络的前端?

人工神经网络进行预测

使用sklearn进行线性回归的预测

如何使用权重在Keras神经网络中手动预测数据

如何使用Keras(tensorflow)在神经网络回归中限制预测输出的总和

使用张量流训练神经网络,为什么这总是预测一个类?

Matlab:如何在神经网络中使用.dat文件?

如何在python中使用广义回归神经网络?

如何在神经网络中使用Softmax激活功能

如何基于神经网络预测更改pygame中的事件

如何规范预测股市的神经网络输入[python]

如何设计神经网络以从数组预测数组

如何使用FFT和神经网络对声音进行分类?我应该使用CNN还是RNN?

如何创建简单的三层神经网络并使用监督学习进行教学?

如何使用张量流神经网络建模对称函数以进行回归

使用JavaScript训练神经网络后,如何保存权重和偏差?

如何使用带有灰度图像的预训练神经网络?

TOP 榜单

  1. 1

    来自Microsoft Office加载项taskpane.js的MySQL驱动程序模块的空引用

  2. 2

    使用AWS Cognito和React的仅限Facebook / Google的登录名(无用户名/密码)

  3. 3

    创建Windows Phone 8应用并将其连接到数据库的最佳方法(最好是SQL Server)

  4. 4

    为什么Java中的System.out.println()打印到控制台?

  5. 5

    卷曲函数无法解析来自bash中变量的代理

  6. 6

    是什么在Android的consumer-rules.pro和proguard-rules.pro之间的区别?

  7. 7

    设置与Apache POI Excel表散点图标记图标的颜色

  8. 8

    将Qt Pyside2与asyncio await语法一起使用?

  9. 9

    崇高的文字+蟒蛇的蟒蛇

  10. 10

    任务':app:minifyReleaseWithR8'.java.lang.NullPointerException的执行失败(无错误消息)

  11. 11

    OpenJDK的和AdoptOpenJDK的区别

  12. 12

    大型数据集缓存到Spark内存中时,“超出了GC开销限制”(通过sparklyr和RStudio)

  13. 13

    “执行测试CMAKE_HAVE_LIBC_PTHREAD”失败实际上是什么意思?

  14. 14

    使用Core 2.2中的Identity,如何在关闭浏览器15分钟后保持会话活动?

  15. 15

    React中的ForwardRefExoticComponent和ForwardRefRenderFunction有什么区别?

  16. 16

    猫鼬查找结果,然后将字段替换为findOne

  17. 17

    如何降级Google Colab的Torch版本

  18. 18

    Keras提前停止回调错误,val_loss指标不可用

  19. 19

    如何避免VSCode中的“导入路径不能以.ts扩展名结尾”错误?

  20. 20

    Nuxt.JS:如何在页面中获取路由URL参数

  21. 21

    是否有为什么会AccessibilityManager.sInstance导致内存泄漏的一个原因?

热门标签

归档