Tag: python

  • [Python] aws-requests-auth で Lambda から IAM 認証つきの API を簡単に叩く

    [Python] aws-requests-auth で Lambda から IAM 認証つきの API を簡単に叩く

    AWS Lambda から IAM 認証のかかった API を呼び出したいという場合があります。 この場合、Lambda に適切な IAM ロール(ポリシー)を付与し、かつ API 呼び出し時に署名を行う必要があります。 Python では、aws-requests-auth というライブラリを使用すると簡単に署名を行うことができます。 API の準備 IAM 認証のかかった API を用意します。リージョンは ap-northeast-1 と仮定します。 今回は GET /hoge を叩くと {“message”: “hoge”} が返ってくるように設定しました。 この API に IAM 認証をかけ、デプロイしておきます。 ステージ名は api としました。 黒く塗りつぶしている箇所は API ID です。 Lambda 関数の作成 API を呼び出す Lambda 関数を作成します。 ロールには基本的なポリシーに加え、以下のようなポリシーを設定します。 Resource は arn:aws:execute-api:(リージョン):(アカウントID):(API ID)/(ステージ)/(メソッド)/(リソースパス) のような形式で指定します。…

  • DockerでKaggle環境を構築して機械学習に入門してみる

    DockerでKaggle環境を構築して機械学習に入門してみる

    案件で機械学習の知識が必要になりましたのでDockerで環境を構築し、試してみようと思います。 以下の手順で進めます。 Dockerでの環境構築 Kaggleから訓練データ、テストデータをダウンロード データの整形 予測結果の出力 私は機械学習についての知識が皆無ですので間違っている箇所もあるかもしれません。。。 環境構築 環境はDockerで構築します。 Kaggle公式のDockerImageがあるらしいのでそちらを利用します。 docker-compose.yml kaggle/pythonでなくpythonのみのイメージでも良いのですがkaggle/pythonであればpandasなどのライブラリもインストール済みなのでオススメです。 これで環境構築は完了です。 Kaggle Kaggleは機械学習、データサイエンスのコミュニティサイトです。機械学習のための「訓練データ」と予測を分析する「テストデータ」をダウンロードすることができ、それを元に機械学習で結果を導き、Kaggleに提出するとScoreが表示されます。 今回は機械学習初心者向けである「タイタニック号の生存者予測」を試してみようと思います。 まず以下のページから訓練データである「train.csv」とテストデータである「test.csv」をダウンロードします。 https://www.kaggle.com/c/titanic/data# それぞれ中身を確認してみます。 乗客ID, 生存可否, Passenger’s class, 名前, 性別, 年齢, 乗船した兄弟/配偶者の数, 乗船した親/子の数, チケット番号, 運賃, 船室番号, 乗船港となっています。 Passenger’s classは1, 2, 3の数値データで1がファーストクラスとなる船室クラスの数値のようです。Embarkedは乗客が乗船した港で、C, Q, Sの3種類、それぞれCherbourg, Queenstown, Southamptonとなります。 test.csvを確認してみるとSurvivedのデータがありません。train.csvのデータで機械学習モデルを作成し、test.csvの乗客の生存可否(Survived)を求める。という課題のようです。 データの整形 欠損しているデータもあり、そのままでは使用できないので平均値などで埋めます。そもそもどのくらい欠損しているのか見てみましょう。 Age, Cabinが多く欠損していますがそれ以外のデータは問題なさそうです。 欠損値を埋める Age(年齢)の欠損値を埋めます。とりあえず中央値を使うように実装してみます。 medianで中央値を得ることができます。 これでAgeの欠損値は埋まりました。CabinとEmbrakedも欠損していますが今回は使用しないのでこのままで進めます。 数値化とtest.csvデータの整形 次にデータの整形を行います。今回使用する「決定木分析」では文字列を扱うことができませんので性別のデータを数値に変換します。 male(男性)を0、female(女性)を1に変換しました。 test.csvのデータも同様に整形します。 test.csvについてはFareデータも一部欠損していましたので中央値で埋めています。 決定木分析…

  • AWS Lambda で Python みたいな関数型言語 Coconut を動かすぞ!!!!!!!(非カスタムランタイム)

    AWS Lambda で Python みたいな関数型言語 Coconut を動かすぞ!!!!!!!(非カスタムランタイム)

    みなさんはじめまして!!!!!!!!!!!! 会津ラボで主にバックエンドの開発を担当している吉原です。他にブロックチェーン等もやってます。好きな言語は Haskell、趣味はクイズゲームです。以後お見知りおきを。 ※ ちなみに弊社には吉の字がつくバックエンド担当が2人おり、度々間違われます。当ブログをご覧になる場合はご留意ください。 さて、今日(注:執筆開始時点)はお盆です。 ……お盆も働いていたやつらだ。面構えが違う。 というのは冗談で、お盆休みをずらして取得しているため、その代わりに出勤しています。こういったことができる所も会津ラボの魅力の1つかなと思います。 閑話休題。 みなさん、Haskell してますか? え? Haskell って何? いますぐすごい H 本(Miran Lipovača『すごい Haskell たのしく学ぼう!』 オーム社)を読んでください。 Haskell は一般的に関数型言語と呼ばれるプログラミング言語の1つです。その中でも強い静的型付けの純粋関数型言語といったようなものになります。要するにつよい。 でもお仕事で Haskell を書くことはほぼありません。 なんでや! こんなにかわいいのに…… みんな、Haskell、書こう。 ……嘆いていても仕方ありません。じゃあ普段はどんな言語を使っているかといいますと、最近は主に Python とか JavaScript です。 みなさん、JS 好きですか? ……誤解を招きそうなのでもう一度。JavaScript 好きですか? ……なるほど。まあ私も JavaScript よりは Python の方が好きです。Python はいいですよね。シンプルで読み書きしやすいし、あとロゴがかわいい(重要)。 でもずっと Python を書いていると、ついこう思ってしまいませんか? もっと関数型したい…… Python はラムダ式やイテレータを始め、一般的に関数型プログラミングと呼ばれるスタイルにおいて有用な機能を多く持っています。 でも……もっと関数型の力が欲しくないか……? もっと軽率に関数合成したり、部分適用したり、パイプでつなげたり、パターンマッチしたり、あわよくば代数的データ型を使ったりしたくないか……? そこで登場するのが Coconut というプログラミング言語です。 Coconut http://coconut-lang.org/…