ハンズラボエンジニアブログAWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。Qiitaの6日目の記事です。清水幸佑Pocketこんにちは!新卒の清水です。最近、勉強または趣味でやっていたPyQの機械学習・初級をやり終えたので自分でもやってみました。以前Kaggleのチュートリアルはやったことはありますが、用意されているデータの説明がやはり英語だったのでそれなりにハードルがありました。今回はネットを放浪中にポケモンのcsvデータがあったので、これを使用して行きたいと思います。何をする?個人的にみずタイプのポケモンが好みなのでステータスからみずタイプかどうか判定しようと思います。notebookとりあえずデータをみてみるpandasを使用してcsvデータを読み込みます。pd.read_csv('pokemon_status.csv')df.head(10)df.info()12df.info()ポケモンが909体(メガ進化も含む)なのでどうやら第七世代(サン・ムーン)までのデータのようです。すばやさ)を説明変数X、タイプを目的変数yとして学習させていこうと思います。みずタイプであるのか、そうでないのかで判断したいのでみずタイプのポケモンには1をそうでないものには0を付与します。df['タイプ1'].apply(type_to_num)applyメソッドを使用すると指定した列データ全てに関数を実行してくれます。データをみてみましょう。df.iloc[9:15]12df.iloc[9:15]みずタイプが含まれている行を出してみました。みずタイプには1が振られています。学習させるもちろんscikit-learnを使用して学習させます。今回は目的変数が2値なのでロジスティック回帰で行います。トレーニングデータとテストデータの割合は7:3で分割します。1000としていますがこのCはハイパーパラメータと呼び、Cの値が大きすぎるほど過学習しやすくなり、小さすぎると学習にならない問題があります。1000とパラメータを変えて影響があるか確認し、特に影響がなかったので1000のまま放置してます。y_test)およそ87%の割合で判定することができました。自分一人の力で機械学習をしたのは初めてなのでまぁまぁいいのではないかと思います。判定に失敗した例としてオーダイルをみずタイプではないと判定しました。そんなにポケモンを知らなくても、見れば多くの人はみずタイプだろうと判断するでしょう。オーダイルの進化前のアリゲイツはみずタイプと判定しました改善案としてはステータスの族ごとに学習をさせることで改善することはできると思います。高い精度を求めるならポケモンの画像データを使用するのがいいと思いました(全体的に青っぽいとか)。最後にポケモンの知識がないと難しいところがあるのでやはりデータのリサーチは必要だということを感じました。全体的な機械学習の流れは覚えられてきたのでこれから色々と試していきたいと思います。JavaScriptを使いwebアプリを作っています。私はフロントをあまり書いてこなかったので心機一転して学習しています。ちなみに、学生のときサーバサイドをやってました(JavaとPythonはよく書いてました)。{console.log(res)});});});ボタンが押されたらajax通信をしてjsonを取得します見た目はこのようにいざ実行Chromeのデベロッパーツールを使用してテストを見ていきますおや?エラーを吐きました翻訳すると要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。したがって、原点「ヌル」はアクセスが許可されません。123要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。したがって、原点「ヌル」はアクセスが許可されません。flask-corsでflask-corsを使用して解決するそうです。flask-corsで入れました。Sharing)制限などのネットワーク用語が出てきたので理解できるよう努力していきたいと思っています。Lambda2017年10月26日ハンズラボPocketこんにちは。CI、回してますか?CodePipelineで実行するステージの進行状況を手軽に見たいと思い、Slackに流れるようにしたので共有します。functionを呼び出します。今回はできるだけシンプルにするために、すでにCodePipelineは作成済みの想定で、すべてのステージにおけるSUCCEEDEDとFAILEDのステータスを通知します。CodePipelineに変更は必要ありません。Webhookでも同じようなことはできるかと思います。functionをデプロイします。serverless.env.ymlデプロイコードは記事の下の方に書いときます。上記のディレクトリ構成のように配置したらデプロイします。deployデプロイできたらCodePipelineを動かしてみます。するとslackにこのような通知が来るかと思います。いつの実行結果なのかをトレースできるようにCodePipelineの実行IDの前半7桁を表示しています。この辺はお好きにカスタマイズしてみてください。まとめCloudWatchイベントの検知がリアルタイムじゃないので、CodePipelineの進行と通知にラグがあったり、前のステージの実行完了と次のステージの実行開始の通知が前後することなどもありますが、実行結果がわかればいいかなくらいの感じなので気にしないことにしてます。ありがとうございました。detailのセクションを消すと、すべてのステータスが検知対象になります。Python2017年3月2日ハンズラボPocket皆々様、お久しぶりのブログ更新です。FirehoseがS3に出力したファイルをPythonでモニャモニャしたいと思っていたところ以下のことでつまづいてしまいました。1つのファイルに複数レコード出力されている場合、改行(区切り文字)がなく1レコードずつ読み込めない!改行とか入っていて、1行ずつ読み込むんだろう・・・みたいな想像を勝手にしていたのでちょっとつまずいてしまいました。AWSのデモデータをKinesisFirehoseに流すと実際のファイルはの中身は下記のようになります。{"ticker_symbol":"TGH","sector":"FINANCIAL","change":-0.6,"price":65.43}{"ticker_symbol":"JYB","sector":"HEALTHCARE","change":-2.27,"price":42.95}{"ticker_symbol":"WAS","sector":"RETAIL","change":0.53,"price":13.04}{"ticker_symbol":"NGC","sector":"HEALTHCARE","change":0.32,"price":5.41}1{"ticker_symbol":"TGH","sector":"FINANCIAL","change":-0.6,"price":65.43}{"ticker_symbol":"JYB","sector":"HEALTHCARE","change":-2.27,"price":42.95}{"ticker_symbol":"WAS","sector":"RETAIL","change":0.53,"price":13.04}{"ticker_symbol":"NGC","sector":"HEALTHCARE","change":0.32,"price":5.41}こういったJsonストリームデータをPythonで処理する時ってどうしたらいいんだろうと調べていたらjsonライブラリにJSONDecoderというのがあるのを見つけました。recordこれを実行すると下記のように出力されました〜。{"ticker_symbol":"NGC","sector":"HEALTHCARE","change":0.32,"price":5.41}1234{"ticker_symbol":"TGH","sector":"FINANCIAL","change":-0.6,"price":65.43}{"ticker_symbol":"JYB","sector":"HEALTHCARE","change":-2.27,"price":42.95}{"ticker_symbol":"WAS","sector":"RETAIL","change":0.53,"price":13.04}{"ticker_symbol":"NGC","sector":"HEALTHCARE","change":0.32,"price":5.41}そうです、この記事・・・単にストリームデータの読み込み方についての記事です!KinesisFirehoseは完全に引きです!でもストリームデータを扱うことは個人的には今後も増えそうなので今回調べておいてよかったです!ではでは〜。Beanstalk(4)GitHub(2)Go(1)IAM(1)JavaScript(3)Kinesis(1)Lambda(7)S3(1)SQS(1)Vue.js(1)serverless(3)イベント(11)キーボード部(1)スクラム(1)デザイン(2)ブロックチェーン(1)新人研修(15)暗号通貨(1)機械学習(1)CONTACTハンズラボへのお問い合わせ、取材・講演のご依頼は、こちらからお願い致します。折り返し担当者よりご連絡させていただきます。RESERVED.トップ。