フリーランチ食べたい

No Free Lunch in ML and Life. Pythonや機械学習のことを書きます。

命名が上手くいかないときは検算をしてみよう

命名はソフトウェア開発において、全開発者が毎日行う重要な作業です。モジュール名、クラス名、変数名など様々な種類の命名を考えなければいけません。 私はテックリードとして働いているので、チームメンバーが命名に苦戦している場面を良く目にします。命…

時系列モデル(ARIMA/Prophet/NNなど)を統一的なAPIで扱えるPythonライブラリ「Darts」がかなり便利

時系列モデルを扱う上でデファクトスタンダードになりそうなPythonライブラリが出てきました。 時系列モデルを扱うPythonライブラリは、 scikit-learn のようなデファクトスタンダードなものがありません。そのため時系列モデルを用いて実装を行うためには、…

たった数行でpandasを高速化する2つのライブラリ(pandarallel/swifter)

pandas はデータ解析やデータ加工に非常に便利なPythonライブラリですが、並列化されている処理とされていない処理があり、注意が必要です。例えば pd.Sereis.__add__ のようなAPI(つまり df['a'] + df['b'] のような処理です)は処理が numpy に移譲されてい…

【参加レポート】Data Platform Meetup vol.2の発表内容まとめ&最近のDP界隈の話題

本日、開催されたData Platform Meetup vol.2に参加してきました。発表の内容や関連するリンクをまとめました。 data-platform-meetup.connpass.com 開催日時: 2019年12月2日 会場: Pixivさんオフィス

PyCon JP 2019でスタッフとしてWebサイトの開発運用をして得た知見と反省

今回PyCon JP 2019にスタッフとして参加し、Webサイトの運用(と最適化アルゴリズムを用いたタイムテーブルの提案)を行いました。そこで得られた知見と反省をまとめて、今後他のカンファレンスなどでWebサイトの開発運用をする方の参考になれば幸いです。 本…

PyCon JP 2019でポスター発表をして得た知見と反省

PyCon JP 2019が終了しました。聴講者としてセッションを見た感想は1つ前のエントリにまとめました。 このエントリでは、自分が行った「ポスター発表」について書きます。今後カンファレンスでポスター発表をする方の参考になれば幸いです。 blog.ikedaosush…

PyCon JP 2019で見たセッションの聴講記録20個分 / 資料・動画・関連リンクなど

2019年9月16日/17日に開催されたPyCon JP 2019で自分が直接/YouTubeで聴講したセッションについてのまとめです。主に下記の内容を書いています。 スピーカーURL 配信動画 スライド 発表内で出てきたライブラリなどのURL 自分の感想 「あのセッションで話して…

人間のためのHTML Parseライブラリ『Requests-HTML』で楽しくデータクローリング

Pythonを使ったデータクローリング・スクレイピングは、エンジニア・非エンジニアを問わず非常に人気や需要のある分野です。しかし、いざデータクローリングしようとすると、複数ライブラリのAPIや、ライブラリそれぞれの関連性に混乱してしまうことがよくあ…

PythonでGitHub Starのトレンドを取得してBokehでプロットしはてなブログに埋め込む

最初に結果です。下のようにGitHub StarのトレンドをBokehで可視化してはてなブログに埋め込む方法を解説します。マウスオーバーしてもらうとtooltipが表示される(=画像埋め込みでない)ことが確認していただけると思います。

つくばエンジニアLT会を開催しました / Tsukuba Engineer Slackを作成しました

「つくばエンジニアLT会」を開催したのでその報告と、つくばのエンジニアのSlackを作成したお知らせです。 tsukuba.connpass.com

Nuxtのbuild部分でCircleCIでコケたときに確認すること

NuxtのbuildがローカルのMacでは通るのにCircleCIで失敗する問題で詰まったので、同じ問題にぶつかった方向けにまとめておきます。 自分の場合は、問題は2つありました。 CircleCIでNuxtのbuildのエラーログが出力されない APFS(Macでデフォルトで採用されて…

Firebase Cloud Functionsの環境変数はRuntimeによって変わるので注意

タイトルで全部言ってしまっているのですが、ハマったので同じハマり方をしている方の検索用にメモっておきます。 自分がぶつかったのはGCLOUD_PROJECTでFirebaseのproject_idを取得して環境ごとに処理を切り分けたかったのですが、GCLOUD_PROJECTが何故か参…

SageMakerをFargateで定期実行する環境をServerless Frameworkで一発でつくる

機械学習のモデルを学習する、あるいは推論APIを作成するにあたってSageMakerはとても便利ですが、 定期実行する機能をSageMaker自身では持っていない という問題があります。 このエントリでは、Serverless Framework(以降、Serverless)を使って素早くSageM…

カックさんのブログメンタリングを3ヶ月受けたら色々X倍になった / 卒業ブログ

カック@ブロガー / k9u@kakakakakku さんに2019年4月~6月の3ヶ月間ブログメンタリングをしていただいていました 「どんなアドバイスをもらったのか」「どんな効果があったのか」を書きたいと思います。これを読んで、ブログメンタリング応募が増えたりカッ…

『iOSアプリ設計パターン入門』が設計に悩む『非』iOSエンジニアも救ってくれる良書だった

2019年1月15日に発売された『iOSアプリ設計パターン入門』が非常に良書だったので紹介します。自分は設計に対してある悩みを抱えていたのですが、この本を読んで一気に解決ました。 peaks.cc

Amazon PersonalizeとServerless Frameworkを使って半日でレコメンドAPIを作成する

前回の記事でGAになったばかりのAmazon Personalizeの使い方の解説をしました。 ただ、前回の記事では実際にアプリケーションから利用するところ、つまりWeb APIとして公開するところまでは書くことができませんでした。 ということでこの記事では、Serverle…

Amazon Personalize使い方まとめ / CloudFormationとPythonでレコメンドアプリケーションを学習・デプロイする

今週、Amazon PersonalizeがGAになりました。東京リージョンでも使うことができます。 この記事ではAmazon Personalizeの概要、使い方の解説を行います。PythonのAWS SDKを使ってレコメンドアプリケーションを作成していきます。 また事前準備のS3やIAM Role…

【組み合わせ最適化入門】カンファレンスのタイムテーブル決めをマッチング問題としてGoogle OR-Tools/Pulp/munkresで解く

PyCon JPの運営メンバーとして自分は、昨年度のPyCon JP 2018のタイムテーブル決めに組み合わせ最適化問題を用いました。ちなみに最終的なタイムテーブルはアルゴリズムで算出された結果を人間がレビューして調整しています。 昨年度は時間の制約があり、い…

【機械学習】混同行列を表示するのに便利な「pycm」

機械学習のクラス分類モデルを評価する際に用いる混同行列を簡単に表示できるちょっとしたライブラリがあったので紹介します。 混同行列とは、機械学習で予測したクラス分類の結果をまとめた行列です。ちょうど上の画像のように「どのクラスに分類されて」「…

Aurora Serverless Data APIとLambdaでAPIをServerless Framework(CloudFormation)で作る

昨年末のAurora Serverless Data APIの登場で、Lambdaからの利用が簡単になりました。この記事ではServerless Framework、CloudFormationを用いて、Aurora Serverless Data APIとLambdaを使ったAPIを構築する方法を紹介します。 使ったコードはすべてGitHub…

【Python】 機械学習の可視化が捗るライブラリ「Yellowbrick」

機械学習Podcast「TWiML&AI」で先週取り上げられた可視化ライブラリ「Yellowbrick」が非常に便利だったので紹介します!ちなみにPodcastには作者の1人であるRebecca Bilbroさんが出演しているので興味持った方は是非聞いてみてください。 twimlai.com www.s…

CloudFormationのOutputsを活用してServerlessプロジェクト内の情報を外部と共有する

Serverless内で使っている環境変数を外部と共有する方法を紹介します。Serverlessでは設定ファイル内でCloudFormationを書くことができ、そこで作成したS3などのResourceをServerlessプロジェクトから使うことができます。この機能はとても便利なのですが、…

SageMakerとServerlessを組み合わせて、お手軽にscikit-learnの機械学習APIを作る

SageMakerとServerlessを使ってscikit-learnの機械学習APIを作る方法を紹介します。 公式ドキュメントやその他の記事の多くはコンソール操作やnotebook上での操作が多く含んでいて、そのコードのまま本番運用に使うのは難しいと感じたので、この記事では コ…

【Python】もうprintデバッグはいらない? / PySnooperで楽々デバッキング

Hacker NewsとRedditでバズっていたPythonのデバッグツールが便利だったので紹介です! PySnooperというライブラリです。 Hacker News - PySnooper: Never use print for debugging again Reddit - PySnooper: Never use print for debugging again ※追記 想…

AWS BatchとServerlessを組み合わせて高速に定期実行バッチやバッチAPIを作る

AWS Lambdaで行えないような重い処理はAWS Batchを使うと簡単に行うことができますが、定期実行したりエンドポイントを作る仕組みはAWS BatchにはまだなくCloudWatchやAPI Gatewayと組み合わせる必要がありますがServerlessと組み合わせることで簡単に実現で…

Nuxtで@nuxtjs/dotenvを使って環境変数を環境ごとに読み分ける

Nuxt開発の小ネタです。環境変数を開発環境/本番環境で切り分けたいときにどうすればよいか、わからなかったのでメモしておきます。

Nuxt/VuexでFirebase Authenticationを使ってユーザー認証機能を作る

Nuxt/VuexでFirebase Authenticationを使ったユーザー認証機能を作るにあたって、基本的なやり方はFirebaseドキュメントに書いてあるのですが、「どこに何を書けばいいのか」がよくわからなかったので調べながらまとめてみました。

Vaex入門 / 可視化もXGBoostも

はじめに 昨日Vaexの性能評価の記事を書きました。 その記事では長くなってしまうので基本的な使い方などを省略しました。 なので今回は入門記事として使い方を紹介します。 blog.ikedaosushi.com

Pandasで行うデータ処理を100倍高速にするOut-of-CoreフレームワークVaex

TL;DR アウトオブコア、かつマルチコアでデータ処理を行えるVaexの紹介です。 string関係のメソッドで平均して100倍以上の高速化が確認できました。(作者のベンチマークだと最大1000倍) 文字列処理以外でも数倍~数十倍の高速化が行えそうです。 この記事では…

つくばPythonもくもく会(tsukuba.py)No.5を開催しました🐍 / 次回開催のお知らせ

5回目になりました! 本日「つくばPythonもくもく会No.5」を開催しました。 最近開催報告を書いていなかったのですが、ありがたいことにブログを見て来てくれる方もいらっしゃるようなので、久々に書いてみました。 開催中の風景