Skip to content

アプリケーション内で をクリックすると、お使いのDataRobotバージョンに関する全プラットフォームドキュメントにアクセスできます。

スコアリングコードの使用例

本機能の提供について

スコアリングコード機能の有効化については、DataRobotの担当者にお問い合わせください。

リーダーボードでスコアリングコードインジケーターが表示されているモデルは、スコアリングコードのダウンロードをサポートします。 スコアリングコードJARは、リーダーボードまたはデプロイからダウンロードできます。

備考

モデルJARファイルには、Java 8またはそれ以降が必要です。

以下の例を参照してください。

詳細については、スコアリングコードに関する注意事項を参照してください。

コマンドラインインターフェイスの例

次の例では、バイナリスコアリングコードJARを使用してCSVファイルをスコアリングします。 完全な構文については、埋め込まれたCLIによるスコアリングを参照してください。

java -Dlog4j2.formatMsgNoLookups=true -jar 5cd071deef881f011a334c2f.jar csv --input=Iris.csv --output=Isis_out.csv 

戻り値:

head Iris_out.csv
Iris-setosa,Iris-virginica,Iris-versicolor
0.9996371740832738,1.8977798830979584E-4,1.7304792841625776E-4
0.9996352462865297,1.9170611877686303E-4,1.730475946939417E-4
0.9996373523223016,1.8970270284380858E-4,1.729449748545291E-4 

コマンドラインパラメーター、およびJavaヒープメモリーの増加の説明も参照してください。

Java APIの例

Java APIと共に使用するには、ダウンロードしたJARファイルをJavaプロジェクトのクラスパスに追加します。 このAPIの出力形式は、連続値プロジェクトおよび分類プロジェクトの出力形式とは異なります。 以下に両方の例を示します。

import com.datarobot.prediction.IClassificationPredictor;
import com.datarobot.prediction.IRegressionPredictor;
import com.datarobot.prediction.Predictors;

import java.util.HashMap;
import java.util.Map;

public class Main {

  public static void main(String[] args) {
    Map<String, Object> row = new HashMap<>();
    row.put("a", 1);
    row.put("b", "some string feature");
    row.put("c", 999);

    // below is an example of prediction of a single variable (regression)

    // get a regression predictor by model id
    IRegressionPredictor regressionPredictor = Predictors.getPredictor("5d2db3e5bad451002ac53318");
    double scored_value = regressionPredictor.score(row);
    System.out.println("The predicted variable: " + scored_value);

    // below is an example of prediction of class probabilities (classification)

    // get a regression predictor by model id
    IClassificationPredictor predictor = Predictors.getPredictor("5d36ee03962d7429f0a6be72");
    Map<String, Double> classProbabilities = predictor.score(row);
    for (String class_label : classProbabilities.keySet()) {
      System.out.printf("The probability of the row belonging to class %s is %f%n",
          class_label, classProbabilities.get(class_label));
    }
  }
} 

別のバージョンのDataRobotによって生成されたモデルを使用する際の下位互換性の例も参照してください。

別のクラスローダーでモデルをロードする

JavaクラスパスにモデルのJARファイルを含めると、モデルのJARファイル内の依存関係と、アプリケーションコードや他のモデルのJARファイル内の依存関係が競合する可能性があります。 こうした競合を避けるために、Predictors.getPredictorFromJarFile()を使用して、実行時にファイルシステムからモデルをロードすることができます。

IRegressionPredictor predictor = Predictors.getPredictorFromJarFile("/path/to/model.jar"); 

Javaによる予測の説明例

リーダーボードまたは予測の説明を含めるが有効なデプロイからスコアリングコードJARをダウンロードすると、Javaコードで予測の説明を計算できます。

備考

詳細については、スコアリングコードでの予測の説明に関する注意事項を参照してください。

以下の例では、デフォルトのパラメーターで予測の説明を計算しています。

IRegressionPredictor predictor = Predictors.getPredictor();   
Score<Double> score = predictor.scoreWithExplanations(featureValues);
List<Explanation> explanations = score.getPredictionExplanation(); 
IClassificationPredictor predictor = Predictors.getPredictor();   
Score<Map<String, Double>> score = predictor.scoreWithExplanations(featureValues);
List<Explanation> explanations = score.getPredictionExplanation(); 

以下の例では、カスタムパラメーターで予測の説明を計算しています。

IRegressionPredictor predictor = Predictors.getPredictor();
ExplanationParams parameters = predictor.getDefaultPredictionExplanationParams();
parameters = parameters
    .withMaxCodes(10)
    .withThresholdHigh(0.8)
    .withThresholdLow(0.3);
Score<Double> score = predictor.scoreWithExplanations(featureValues, parameters);
List<Explanation> explanations = score.getPredictionExplanation(); 
IClassificationPredictor predictor = Predictors.getPredictor();
ExplanationParams defaultParameters = predictor.getDefaultPredictionExplanationParams();
defaultParameters = defaultParameters
    .withMaxCodes(10)
    .withThresholdHigh(0.8)
    .withThresholdLow(0.3);
Score<Map<String, Double>> score = predictor.scoreWithExplanations(featureValues, defaultParameters);
List<Explanation> explanations = score.getPredictionExplanation(); 

更新しました October 3, 2023