2

Google 予測 API に対して特定の方法で API エクスプローラー インターフェースを使用すると、トレーニング データを正しく正常に設定し、期待される結果で予測を実行できます。

また、php で google によって提供された例に基づいて、localhost から単一の機能予測を実行することもできます。

私のトレーニング データには、予測を実行したい 51 個の特徴があります。モデルは健全で、偏りのない 92% の精度評価を返しました。25000 インスタンスに基づくトレーニング済みモデルに問題はありません。

多少関連する質問で、Marc Cohen は php で次の例を示して、言語のデモ ファイルまたは単一の機能予測に対して完全に機能する予測を実行しました。

//------------------

PHPを使用して予測を行うテストプログラムを作成したところ、これを機能させることができました。魔法のシーケンスは次のとおりです。

   $id = "your-model-id-goes-here";
   $predictionText = "This is a test";
   $predictionData = new InputInput();
   $predictionData->setCsvInstance(array($predictionText));
   // My model takes a single feature but if your model needs more than one 
   // feature, simply include more values in the csvInstance array, like this...
   // $predictionData->setCsvInstance(array($data1, $data2, ..., $dataN));
   $input = new Input();
   $input->setInput($predictionData);
   print_r($predictionService->trainedmodels->predict($id, $input));

これにより、次のように、予測リクエストからのフォーマットされていない JSON レスポンスが表示されます。

Array ( [kind] => prediction#output [id] => languages [selfLink] =>    
https://www.googleapis.com/prediction/v1.4/trainedmodels/languages/predict 
[outputLabel] => French [outputMulti] => Array ( [0] => Array ( [label] => 
English [score] => 0.333297 ) [1] => Array ( [label] => French [score] => 
0.339412 ) [2] => Array ( [label] => Spanish [score] => 0.327291 ) ) )

//--------------------

彼が複数の機能について作成したメモ: // 私のモデルは単一の機能を使用しますが、モデルに複数の機能が必要な場合は、 // このように csvInstance 配列に値を追加するだけです... // $predictionData-> setCsvInstance(array($data1, $data2, ..., $dataN));

$predictionText 変数を「Feature_1」、「Feature_2」、「Feature_3」、.....「Feature_N」として渡すだけでよいことを意味します。

私が使用しているデータは主に数値です。例: 69,13,10,9,101,69,94,96,96,96......9 引用符の有無にかかわらず試してみましたが、一貫して同じ予測が返されます。

API エクスプローラーを使用して、すべてのデータを予測するために新しい配列要素を入力すると、次のようになります。

"input": {
"csvInstance": [

"84",

"63",

"30",

"30",

...........

正解を予測します。

エクスプローラーを使用して、Marcs の例に従ってデータを入力するとします。つまり"84","63","30","30","207","83","87","94","94","94","94","94","94","94","38","57","143","144","164","164","164","164","164"......... 、同じデータでもまったく異なる結果が得られ、この 2 番目のメソッドは常に同じ結果を返します。

明らかに、私はここで何か間違ったことをしています。私はすべてのphp jsonエンコードオプションと、これを正しくフォーマットしてphpスクリプトまたは実際にAPIエクスプローラーで機能させるために考えられるものをすべて試しましたが、役に立ちませんでした。

$predictionText正しいフォーマットの仕方を誰か教えてください。

以下の私のコード。(引用符の有無にかかわらず、純粋に数値で試しました)

    $predictionText = '84,63,30,30,207,83,87,94,94,94,94,94,94,94,38,57,143,144,164,164,164,164,164,"New Moon",115,221,31,62,-14,-106,-43,-4,43,-174,-224,25,93,142,78,87,29,-65,44,33,34,19,16,14,13,12,11';

$predictionData = new Google_InputInput();
$predictionData->setCsvInstance(array($predictionText) ); 
$input = new Google_Input();    
$input->setInput($predictionData);   
$result = $predictionService->trainedmodels->predict($id, $input);
print("</div><br><br><h2>Prediction Result:</h2>");
print_r($result);

ありがとうございました。

4

1 に答える 1

2

解決しました。

トレーニングでは、文字列を引用符で囲む必要があります。つまり「新月」。予測には引用符は必要ありません。私が持っている単一の文字列機能を引用符で囲まないように予測文字列を変更しましたが、すべて機能しています。

于 2013-01-13T15:09:50.223 に答える