カテゴリー別アーカイブ: 未分類

scikit-learnで最適なパラメータを決めるためにGrid Searchを使う

はじめに


最近、機械学習を試すときはscikit-learnを使っています。
SVMやランダムフォレストなど、有名な手法を数行のコードで試せるので非常に便利です。
例えばランダムフォレストは以下のような感じで使えます。(サンプルより引用)

とてもシンプルですね。

最も精度の高いパラメータを決めたい


引き続きランダムフォレストについて言及していきます。
上の例ではn_estimatorsというパラメータについて10という値を指定していますが、
実は指定できるパラメータが結構あります。

一つ一つ手打ちで指定していくのにはちょっと限界がありそうですね。
最も精度の高いパラメータを得るためにはどうしたら良いでしょうか?
そこで最適なパラメータを決めるためにGrid Searchを紹介します。

Grid Searchしてみる


早速ですが以下がサンプルです。

各パラメータの試したい値を配列で渡して、grid_searchに渡すだけです。
clf.best_estimator_ からクロスバリデーションの結果、最も精度の高かったパラメータの値がわかります。

終わりに


パラメータをチューニングするだけで、精度が大きく変わります。
Grid Searchを用いて最適なパラメータを見つけましょう。

参考サイト

3.2. Grid Search: Searching for estimator parameters — scikit-learn 0.15.2 documentation

http://scikit-learn.org/stable/modules/grid_search.html

PHPでiOSにPush通知するためにAmazon SNS Mobile Push APIを使ってみた

はじめに


今まで使っていたライブラリが環境依存で使えなかったので、最近出たAmazon SNS を使ったモバイルデバイスへのプッシュ通知を実装してみることにしました。

使用したAWS SDK for PHP2のバージョンは2.4.3です。このバージョン以上でないとプッシュ通知のAPIが実装されていないと思います。

AWS SDK for PHP2 を使ってPushする方法


実はPHPとJavaのサンプルが公式ブログで紹介されています。 http://aws.typepad.com/aws/2013/08/push-notifications-to-mobile-devices-using-amazon-sns.html

ただしこちらのサンプルはAmazonプラットフォーム向けなんですね。

自分はiOSのプッシュ通知を実装したかったのでドキュメントを読みつつ実装しました。 違いは上記コードの

に渡すパラメータです。最終的には以下のようになりました。

ハマったポイントは以下の2つでした。

  • iOSでbadgeなどのパラメータを送る際には’MessageStructure’に’json’の指定が必要
  • ‘Message’の値とさらにその中の’APNS’(ここでは’APNS_SANDBOX’)にもjson_encodeが必要

ここに気づかずJSONのままのメッセージを送ったり、バッジやサウンドを指定できずにいました。 APIを使うとはいえ各プラットフォームごとに送るフォーマットは微妙に違うので注意が必要ですね。

というわけで、Amazon SNS を使ったモバイルデバイスへのプッシュ通知を実装することができました。

参考サイト

Using Amazon SNS Mobile Push APIs – Amazon Simple Notification Service

http://docs.aws.amazon.com/sns/latest/dg/mobile-push-api.html

Amazon Simple Notification Service — AWS SDK for PHP 2.4.4 documentation(今は2.4.4が最新になっているようです)

http://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/service-sns.html