0

私は、predictionio の他のテキスト フィールドに基づいてテキスト フィールドを予測しようとしています。このガイドを参考にしました。を使用して新しいアプリを作成しました

pio app new MyTextApp

テンプレートで提供されたデータソースを使用して、評価までガイドに従いました。評価までは大丈夫でした。データ ソースを評価すると、以下に貼り付けたエラーが発生します。

[INFO] [CoreWorkflow$] runEvaluation started
[WARN] [Utils] Your hostname, my-ThinkCentre-Edge72 resolves to a  loopback address: 127.0.0.1; using 192.168.65.27 instead (on interface eth0)
[WARN] [Utils] Set SPARK_LOCAL_IP if you need to bind to another address
[INFO] [Remoting] Starting remoting
[INFO] [Remoting] Remoting started; listening on addresses  :[akka.tcp://sparkDriver@192.168.65.27:59649]
[INFO] [CoreWorkflow$] Starting evaluation instance ID: AU29p8j3Fkwdnkfum_ke
[INFO] [Engine$] DataSource: org.template.textclassification.DataSource@faea4da
[INFO] [Engine$] Preparator: org.template.textclassification.Preparator@69f2cb04
[INFO] [Engine$] AlgorithmList: List(org.template.textclassification.NBAlgorithm@45292ec1)
[INFO] [Engine$] Serving: org.template.textclassification.Serving@1ad9b8d3
Exception in thread "main" java.lang.UnsupportedOperationException: empty.maxBy
at scala.collection.TraversableOnce$class.maxBy(TraversableOnce.scala:223)
at scala.collection.AbstractTraversable.maxBy(Traversable.scala:105)
at org.template.textclassification.PreparedData.<init>(Preparator.scala:152)
at org.template.textclassification.Preparator.prepare(Preparator.scala:38)
at org.template.textclassification.Preparator.prepare(Preparator.scala:34)

これを機能させるには、構成ファイルを編集する必要がありますか? movielens データのテストを正常に実行しました。

4

1 に答える 1

3

DataSourceしたがって、この特定のエラー メッセージは、データがクラスを通じて適切に読み取られていない場合に発生します。別のテキスト データ セットを使用している場合は、メソッド内の eventNames、entityType、およびそれぞれのプロパティ フィールド名への変更が正しく反映されていることを確認してくださいreadEventData

メソッドは、maxBy観測数が最も多いクラスをプルするために使用されます。ラベル Map へのカテゴリが空の場合は、記録されているクラスがないことを意味し、基本的に、フィードされているデータがないことを示します。

たとえば、このエンジンを使用してスパム検出器を作成しました。私の電子メール データの形式は次のとおりです。

{"entityType": "content", "eventTime": "2015-06-04T00:22:39.064+0000", "entityId": 1, "event": "e-mail", "properties": {"label": "spam", "text": "content"}}

このデータにエンジンを使用するために、DataSource クラスに次の変更を加えました。

entityType = Some("source"), // specify data entity type eventNames = Some(List("documents")) // specify data event name

に変更

entityType = Some("content"), // specify data entity type eventNames = Some(List("e-mail")) // specify data event name

)(sc).map(e => Observation(
  e.properties.get[Double]("label"),
  e.properties.get[String]("text"),
  e.properties.get[String]("category")
)).cache

変更:

)(sc).map(e => {
  val label = e.properties.get[String]("label")


  Observation(
    if (label == "spam") 1.0 else 0.0,
    e.properties.get[String]("text"),
    label
  )
}).cache

この後、ビルド、トレーニング、デプロイ、および評価を行うことができます。

于 2015-06-04T17:29:29.327 に答える