使用するJavaのpython訓練されたモデルPMMLを呼び出します

二、三年として、私は本当にPMMLモデルファナを呼び出すために、突然のJavaを使用して、Javaのデータマイニング技術を使用していません。

インターネットは、あなたがより良い皆を助けることができるならば、あなたは、いつでも使用することができ、実行が成功する前に、彼は、週に独自のレコードのプロセスをしようとしたコードの一部を検索します。

ソフトウェアのインストールから言えば、それはあまりにも面倒を見ていません。

まず、ツールをダウンロード(ことわざとして、その利益の事前の良い仕事!ハハ)

私はちょうど日食をインストールし始めたが、解決できない多くの問題がIDEAを使用し、そこにある、とPycharmは会社によって発行されました。

http://www.jetbrains.com/products.html#lang=java:公式サイトを入力する最初の

IDEAのダウンロードを選択します。

 

コミュニティ版は、あまりにも特徴以来、私は、Enterprise Editionをダウンロードし、背後には、メソッドを割れ教えてくれます。

IDEAのインストールは通常のインストールと同様に、オンラインチュートリアルを持っています。

エンタープライズアクティベーションコード我々は公共の数を集中することができ、私はまた、オンラインで見つけます。

http://idea.medeming.com/

社会的関心の後数は、ライン上に貼り付けます。

二、Javaのインストール環境

チュートリアルします。https://blog.csdn.net/weixin_38381149/article/details/89668578

ブログを参照するには、その時点でのブログを探していますが、見つかった場合は、これは非常に広い、JDK、TOMCAT、そこにMavenの。

最初は私にMavenをインストールするには長い時間がかかりました。

第三に、新しいMavenプロジェクト(私が言うことかわかりません...)

  ファイル== "新しい=="プロジェクト== "Mavenの

第四に、依存関係を追加

  私はモデルに呼んでいるので、これだけの数を追加し、多くの依存がありません

    <依存性>

        <依存>
            <groupIdを> org.jpmml </ groupIdを>
            <たartifactId> PMML-評価</たartifactId>
            <バージョン> 1.4.1 </バージョン>
        </依存関係>
        <依存>
            <groupIdを> org.jpmml </ groupIdを>
            <たartifactId> PMML-評価拡張</たartifactId>
            <バージョン> 1.4.1 </バージョン>
        </依存関係>

        <依存>
            <groupIdを> javax.xml.bindの</ groupIdを>
            <たartifactId> JAXB-API </たartifactId>
            <バージョン> 2.3.0 </バージョン>
        </依存関係>
        <依存>
            <groupIdを> com.sun.xml.bind </ groupIdを>
            <たartifactId> JAXBコア</たartifactId>
            <バージョン> 2.3.0 </バージョン>
        </依存関係>
        <依存>
            <groupIdを> com.sun.xml.bind </ groupIdを>
            <たartifactId> JAXB-IMPL </たartifactId>
            <バージョン> 2.3.0 </バージョン>
        </依存関係>

    </依存関係>

第五に、PythonのトレーニングのJavaコールアウトのコードPMMLモデル

輸入org.dmg.pmml.FieldName;
輸入org.dmg.pmml.PMML;
輸入 org.jpmml.evaluator *。;
輸入org.jpmml.model.PMMLUtil;
輸入org.xml.sax.SAXException。

輸入javax.xml.bind.JAXBException。
輸入java.io.FileInputStream;
輸入java.io.FileNotFoundException。
インポートにjava.io.IOException;
輸入java.io.InputStreamを。
輸入はjava.util.ArrayList;
輸入java.util.HashMapを;
輸入はjava.util.List;
輸入java.util.Map;

パブリック クラスClassificationModel {
     プライベート評価者modelEvaluator。

    / **
     * PMMLファイルのパスを渡すことによって、機械学習モデルを生成するには
     *
     * @Param pmmlFileName PMMLファイルパス
      * / 
    パブリックClassificationModel(文字列pmmlFileName){
        PMML PMML = nullを

        してみてください{
             場合(pmmlFileName!= nullの){
                InputStreamがある = 新しいFileInputStreamを(pmmlFileName)。
                PMML = PMMLUtil.unmarshal(です)。
                してみてください{
                    近くにあります();
                } キャッチ(IOExceptionを電子){
                    System.out.println( "入力ストリームクローズエラー!" );
                }

                ModelEvaluatorFactory modelEvaluatorFactory = ModelEvaluatorFactory.newInstance()。

                この .modelEvaluator = (評価者)modelEvaluatorFactory.newModelEvaluator(PMML)。
                modelEvaluator.verify();
                System.out.println( "負荷モデルの成功!" );
            }
        } キャッチ(SAXExceptionの電子){
            e.printStackTrace();
        } キャッチ(持つJAXBException電子){
            e.printStackTrace();
        } キャッチ(にFileNotFoundException電子){
            e.printStackTrace();
        }

    }

    // 特徴モデルの名前が必要です
    公共の一覧<文字列> {)(getFeatureNamesを
        一覧 <文字列> featureNames = 新しいのArrayList <文字列> ();

        リスト <のInputField> inputFields = modelEvaluator.getInputFields();

        {(inputFieldsのInputField入力フィールド)
            featureNames.add(inputField.getName()のtoString())。
        }
        リターンfeatureNames。
    }

    // ターゲット・フィールド名の取得
    、パブリック文字列GetTargetName(){
         リターン modelEvaluator.getTargetFields()GET(0 ).GetName()toString()を;
    }

    // 確率分布を生成するためにモデルを使用して
    プライベート確率分布getProbabilityDistribution(地図<フィールド名、?> 引数){
        地図 evaluateResult = <フィールド名、?> modelEvaluator.evaluate(引数);

        フィールド名フィールド名 = 新しいフィールド名(getTargetName());

        リターン(確率分布)evaluateResult.get(フィールド名);

    }

    // の異なるカテゴリの確率を予測するために
    、公開(地図<フィールド名、ナンバー> ValueMapの<文字列、ナンバー> predictProba {引数)
        確率分布確率分布 = getProbabilityDistribution(引数)。
        リターンprobabilityDistribution.getValues();
    }

    // 予測は分類
    パブリックオブジェクトは、(地図<フィールド名、?>予測引数){
        確率分布確率分布 = getProbabilityDistribution(引数)。

        リターンprobabilityDistribution.getPrediction();
    }

    パブリック 静的 ボイドメイン(文字列[]引数){
        CLF ClassificationModel = 新新 ClassificationModel( "D:/JupyterSpace/RandomForestClassifier_Iris.pmml" ); //アドレスモデル

        一覧 <文字列> featureNames = clf.getFeatureNames();
        System.out.println( "機能:" + featureNames)。

        // 構築物は、予測データと 
        地図<フィールド名、ナンバー> = waitPreSample 新しい新しい HashMapの<> ();
        waitPreSample.put(新しいフィールド名( "がく片の長さ(cm)")、10 )。
        waitPreSample.put(新しいフィールド名( "がく片の幅(センチ)")、1 );
        waitPreSample.put(新しいフィールド名( "花弁の長さ(cm)")、3 )。
        waitPreSample.put(新しいフィールド名( "花びらの幅(センチ)")、2 );

        System.out.println( "waitPreSample結果を予測する:" + clf.predict(waitPreSample).toString());
        System.out.println( "waitPreSample predictProba結果:" + clf.predictProba(waitPreSample).toString());

    }

}

注意事項:

一貫性を保つために1、クラス名とファイル名

2、ファイルを開く==「プロジェクト構造

お使いのJDKのバージョンを参照してください、ここで同じです

エラーかどうかを確認するために、プログラムを実行します。

これは私が報告間違いです。

NoClassDefFoundErrorが:javaxの/活性化/データソース

  activation.jarのパッケージ:ソリューションは、ダウンロードすることです。

  ダウンロード:

    リンクします。https://pan.baidu.com/s/14D8cQWIJp2d7h2iljAPZ2Aの
    抽出コード:6f37

それは問題になりません。質問がある、メッセージを残してください、私たちは返信。(我々はまだそれを使用することを教えてください問題が...)

おすすめ

転載: www.cnblogs.com/zhangzhixing/p/12095815.html