u++の備忘録

python

Kaggle PetFinderコンペで優勝しました

Kaggleで開催されていた「PetFinder.my Adoption Prediction」コンペ*1で優勝しました*2。素晴らしいチームメイトに恵まれた思い出深いコンペです。開催から1年近く経過した今でもチーム「Wodori」のSlackでは活発に議論が交わされており、常に互いに刺激を…

RData形式のデータセットをPythonで読み込む

Tl;DR rdataパッケージ*1を用いて、次のようにRData形式のデータセットを読み込める。 import rdata parsed = rdata.parser.parse_file('../data/vouchers.rda') converted = rdata.conversion.convert(parsed) vouchers = converted['vouchers'] 『効果検証…

TF-IDFを用いた「Kaggle流行語大賞2019」

「kaggle その2 Advent Calendar」の10日目の記事です*1。2018年に引き続き、2019年もTF-IDFを用いた「Kaggle流行語大賞」を算出します。具体的には、2019年に公開されたNotebookのタイトル情報から、頻繁に登場した単語をランキング形式でまとめました。な…

小数点以下を取り出す特徴量エンジニアリングの解釈と実装

Couseraの「How to Win a Data Science Competition: Learn from Top Kagglers」*1などで紹介されている特徴量エンジニアリングのアイディアの一つとして「数値データの小数点以下を取り出す」という技法があります。本記事では簡単な解釈を述べ、Pythonによ…

Pythonを用いたKaggle入門書を2020年3月に講談社から出版します

このたびご縁があり、Pythonを用いたKaggle入門書を講談社から出版する運びとなりました*1。現在デザインや校正などを進めている段階で、発売開始は2020年3月を予定しています。同人誌ながら累計2500部以上を売り上げている『Kaggleのチュートリアル』*2を執…

J2降格からJ1復帰にかかった年数をまとめた

諸事情*1でJ2降格に関する情報が気になっている今日このごろ、J2降格からJ1復帰にかかった年数をまとめてみました。降格・昇格チームの一覧*2を見ながら、手作業で処理しました。良い可視化方法が思いつかなかったので、一旦は表形式です。元データはGitHub*…

「第二回全国統一プログラミング王決定戦予選」参加録

「第二回全国統一プログラミング王決定戦予選」に参加してA, Bの2完でした。約7カ月ぶりのRated参加だったこともあり、「あまりを計算し忘れる」という初歩的な見落としで爆死しました。。。atcoder.jp A - Sum of Two Integers(100点) 偶数と奇数で場合分…

「Sports Analyst Meetup #5」を開催しました #spoana

はじめに 発表資料 togetter ロングトーク①「batter pitcher 2 vec」 ロングトーク②「野球界でのシステム導入事例~IT企業としてのサポート~」 LT ご協力いただいた企業 おわりに はじめに 「Sports Analyst Meetup #5」を開催しました。spoana.connpass.co…

弊ブログの「Techブログスコア」を算出した

とある記事を見て、自分のブログも執筆数はそこそこあるので良い線行くのではないかと思って集計してみました。僕の個人ブログも、そこそこ良いところ行くんじゃなかろうか。===150社のTechブログを分析して見えた、エンジニアが今転職するべき企業ランキン…

「初手LightGBM」をする7つの理由

Kaggleなどのデータ分析コンペでテーブルデータを扱う場合、最近は取りあえずLightGBMを利用する場合が多いです。本記事では、初手の機械学習アルゴリズムとして「LightGBM」*1を採用する理由を紹介します。あくまで2019年10月末時点での個人の主観なので、…

Adversarial Validationを用いた特徴量選択

先日公開した「IEEE-CIS Fraud Detection」コンペの解法*1の中で、Adversarial Validationを用いた特徴量選択について何回か質問がありました。本記事では、Adversarial Validationを用いた特徴量選択を解説します。 Adversarial Validationとは いつ使う? …

AI×愛知の「AIchi勉強会」でKaggleの魅力について発表しました

愛知県名古屋市で開催された「AIchi勉強会」で、Kaggleの魅力について発表しました。愛知県出身という縁でお声がけいただいた形です。 愛知県の製造業の異なる会社で働く、AI・機械学習に興味を持つメンバー3人中心に「愛知県で会社を越えてAIに興味ある人、…

csv化で文字列になったlistやdictを元に戻す

配列が格納されているレコードを含む csv を df で呼び出すと配列の部分が str に変換されてしまうのですが、解決手段ないですか。。— かえるるる | krrr (@kaeru_nantoka) September 3, 2019csv化すると文字列になってしまう仕様があるのでpickle形式などで…

Poincaré Embeddings でJ1リーグのチーム・選手を可視化

ふと「Poincaré Embeddings」*1で遊んでみたいと思い立ち、サッカーJ1リーグのデータで試してみました。 Poincaré Embeddings gensimでの実装とデータセット Poincaré Embeddingsの学習 活用方法 おわりに Poincaré Embeddings Poincaré Embeddingsに関する…

テーブルデータ向けのGAN(TGAN)で、titanicのデータを増やす

はじめに ynktk さんのツイート*1を見て、テーブルデータ向けの GAN の存在を知りました。本記事では、TGAN を用いて titanic のデータを拡張してみます。 TGANとは テーブルデータに対応した GAN (Generative Adversarial Network, 敵対的生成ネットワーク)…

scikit-learn-contrib の Metric Learning を試す

Metric Learning について Metric Learning は、データの教師情報を基にデータ間の距離や類似度などの Metric を学習する手法です。日本語で手軽に読める記事だと、*1, *2 などが詳しいです。このたび、phalanx さんの tweet *3で、 Metric Learning の基礎…

【特徴量の追加編】機械学習を用いた大相撲千秋楽の勝敗予想

はじめに 「連勝・連敗」特徴量の追加 tsfresh特徴量の追加 おわりに はじめに 前回は、「Sports Analyst Meetup #4」でのLTに向けて、ベンチマークとなる機械学習モデルを構築しました。新しい特徴量を追加することで、予測モデルの性能が向上することも確…

【ベンチマーク編】機械学習を用いた大相撲千秋楽の勝敗予想

はじめに ベンチマークの構築 特徴量 目的変数 機械学習モデル Validation の構築 評価性能 新しい特徴量の追加 追加する特徴量 評価性能(新しい特徴量の追加) おわりに はじめに 前回は、「Sports Analyst Meetup #4」でのLTに向けて、「Sumo Reference」…

【可視化編】機械学習を用いた大相撲千秋楽の勝敗予想

はじめに データの収集 仮説 可視化 おわりに はじめに 前回は、「Sports Analyst Meetup #4」でのLTに向けて、大相撲のデータを収録している「Sumo Reference」を紹介しました。upura.hatenablog.com本記事では、「Sumo Reference」から収集したデータを用…

Djangoで「名古屋/東京」の画像分類アプリを作った

Djangoで簡単な画像分類アプリを作ってみた。Flickrから「名古屋」「東京」で画像を400枚ずつ収集して、KerasのVGG16使って分類器を学習。推論したい画像を渡して、結果を表示するところまで。分類器が適当でAUCが.65くらいなのはご愛嬌。 pic.twitter.com/E…

Udemy講座「【Python・Django・TensorFlow + 転移学習】画像分類AIアプリ自作入門」をやった

Udemy講座「【Python・Django・TensorFlow + 転移学習】画像分類AIアプリ自作入門」をやりました。タイトル通り、PythonのTensorFlowで作成した機械学習モデルをDjangoを用いてWebアプリ化する講座です。全3.5時間を一晩で流し見しながら追体験しましたが、…

LightGBMでtargetをsqrt(target)に変換して予測する「reg_sqrt=True」

機械学習の教師あり学習における一つのテクニックとして、学習時の target 変換があります。昨晩に LightGBM の documentation を読んでいたところ、sqrt 限定ですが、target の変換を自動で処理してくれる parameter "reg_sqrt" を(恥ずかしながら初めて)…

「Sports Analyst Meetup #3」を開催&LTしました #spoana

はじめに 発表資料 togetter ロングトーク「Jリーグ導入事例から見えてきた、ダイナミックプライシングの未来」 LT 自分の発表 おわりに 過去の開催 はじめに 「Sports Analyst Meetup #3」を開催しました。今回は自分自身もLTで発表しました。spoana.connpa…

Microsoft/interpret で Kaggle titanic

次のツイートを見かけて興味を持ったので、取りあえず使ってみました。使い方はGitHubのREADMEに記載がありますが、sklearnの機械学習モデルと同様に fit -> predict します。Microsoftが、解釈性が高くかつ精度も高いBoostingのモデル(Explainable Boosting…

日本語版text8コーパスから単語の分散表現を得る

はじめに 参照記事 GitHub 手順 コーパスのダウンロード gensimでの読み込み Kaggle Kernel おわりに はじめに 手軽に日本語の単語の分散表現を得ようと思ったら、これが良かった。数分でやりたいこと終わった。===日本語版text8コーパスを作って分散表現を…

Kaggle地震コンペ振り返り(public 5th -> private 212th)

2019年1〜6月にわたって開催されていたKaggleの「LANL Earthquake Prediction」コンペに参加し、銀メダルを獲得しました。public LBの時点では賞金圏の5位につけていて、ドキドキしながら最終結果を待ち構えていました。心臓ちぎれそうだけど、このドキドキ…

AtCoder Beginner Contest 127をPythonで解く

AtCoder Beginner Contest 127をPythonで解きました(A〜D)。atcoder.jp A - Ferris Wheel(100点) 丁寧に条件分岐 A, B = list(map(int, input().split())) if (A <= 5): print(0) elif (A >= 13): print(B) else: print(B//2) B - Algae(200点) 漸化式…

AtCoder Beginner Contest 126をPythonで解く

AtCoder Beginner Contest 126をPythonで解きました(A〜E)。atcoder.jp A - Changing a Character(100点) いろんなやり方はあると思うが、計算量も余裕があるので愚直に マッピング用のdictを用意し、K番目のときだけ適用する N, K = list(map(int, inpu…

「diverta 2019 Programming Contest」をPythonで解く

A〜Dまで解きました。atcoder.jp A - Consecutive Integers(100点) サンプルなど、実際に具体的な数字で考えると良い N, K = list(map(int, input().split())) print(N - K + 1) B - RGB Boxes(200点) r, gを固定したときにbが答えとなり得るか(割り切…

Kaggle Kernel (Jupyter Notebook) でログを別ファイルに出力する

本記事では、Kaggle Kernel (Jupyter Notebook) でログを別ファイルに出力する方法を紹介します。「Jupyter Notebook形式での出力が大量になると見づらいので、別ファイルに吐き出したい」などの需要を想定しています。 方法 loggerでファイルに書き込んでい…