u++の備忘録

python

【Polars版】『PythonではじめるKaggleスタートブック』のサンプルコード

『PythonではじめるKaggleスタートブック』で提供しているサンプルコードを、pandasからPolarsに書き換えた Notebook を作成しました。Polars は、Rustベースの高速なデータ処理ライブラリです。 www.kaggle.com pandas での書き方をコメントで残しているの…

自然言語処理の国際会議「AACL-IJCNLP 2022」に論文採択・参加報告

11 月 20〜23 日開催の自然言語処理の主要な国際会議「AACL-IJCNLP 2022」に参加しました。投稿した論文が本会議にロングペーパーとして採択され、22 日にポスター発表を実施しました。本記事の最後に、論文・コード・発表資料のリンクを掲載しています。 本…

「一発ジャンケン」の確率シミュレーション

Yahoo!ニュースを眺めていて見かけた「一発ジャンケン」が、プログラミングの教材として良さげだったので、実際に簡単なプログラムを組んでみました。ルールは以下の通りです(記事からの抜粋)。 まず、1~5を指で出す。数字が大きい人が勝ちなので5が一…

【書籍メモ】『Pythonによる金融テキストマイニング』(朝倉書店)

『Pythonによる金融テキストマイニング』(朝倉書店)を読みました。180 ページ弱で金融関連文書を題材にした話題がまとまっていて、この領域に飛び込む初学者向けに紹介しやすい書籍だと感じました。 www.asakura.co.jp 章立てを以下に示します。第 1 章で…

直近の3イベントの登壇情報(3月26日〜4月4日)

3月26日〜4月4日に、3つのイベントに登壇します。スポーツ分析、業務、Kaggleとそれぞれ異なる話題について話します。ご関心あれば、ぜひご参加ください。 スポーツアナリティクスジャパン2022 3月26日の「スポーツアナリティクスジャパン2022」に登壇します…

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

Kaggle Advent Calendar 2021 の2枚目の5日目の記事です。 2018〜2020年に引き続き、今年もTF-IDFを用いた「Kaggle流行語大賞」を算出します。具体的には、2021年に公開されたNotebookのタイトル情報から、今年特に際立って登場した単語は何かをランキング形…

「Pythonによるアクセスログ解析入門」の題目で「PyCon JP 2021」で発表しました

10月16日に「PyCon JP 2021」で発表しました。PyCon JP は日本最大級のPythonユーザが集まるイベントです。私はイベント自体が初参加で「Pythonによるアクセスログ解析入門」の題目で提出したプロポーザルが採択されました。 発表では、普段業務で扱っている…

Kaggle「CommonLit Readability Prize」コンペ25位の振り返りと上位解法まとめ

8月2日に終了したKaggle「CommonLit Readability Prize」コンペにチームで参加し、25位でした。 3682チーム参加で、17位までが金メダル圏内で、もう一歩という結果でした。 コンペ概要 チームでの取り組み 上位解法 全体共通の傾向 1位 2位 3位 4位 5位 6位 …

「4GM本」の翻訳書『Kaggle Grandmasterに学ぶ 機械学習 実践アプローチ』が出版されます

マイナビ出版より8月に『Kaggle Grandmasterに学ぶ 機械学習 実践アプローチ』と題した書籍が出版されることになりました。 世界各国で出版・公開された書籍 "Approaching (Almost) Any Machine Learning Problem" の翻訳書です。 豊富なコード例と機械学習…

LightGBMの特徴量の順序変更が重要度に与える影響

同一の質問を何度か見かけたので、次回はリンクを貼って解決するためのメモです。 Q: 特徴量の順番を変えたら、重要度や精度が変わりましたが、なぜでしょうか? A1: 学習時のハイパーパラメータ feature_fraction の影響かもしれません LightGBMの学習時の…

Solafune「夜間光データから土地価格を予測」コンペ 6 位解法

衛星データに関するコンペティションプラットフォーム「Solafune」で開催されていた「夜間光データから土地価格を予測」コンペ*1で、 6 位になりました。終了直前の参加だったので、優勝した方が公開していた特徴量に少し足して、pseudo labeling で水増しし…

Google Code Jam 2021 Qualification Round 参加録

「Google Code Jam 2021」の Qualification Round に参加しました。「Code Jam」は、Googleが主催する世界的なコーディングコンテストで、Qualification Round は最初の予選です。今年は日本時間の3月26日22時〜28日午前4時にわたり開催され、出題5問から合…

国際会議「ACM WSDM」のワークショップ「Booking.com Data Challenge」で6位に

国際会議「ACM WSDM」のワークショップとして開催されていた「Booking.com Data Challenge」*1で6位に入りました*2。Wantedly の hakubishin3 さんと Yuya Matsumura さん とのチームで、解法をまとめた論文は同ワークショップに採択・公開されました*3。同…

「Weekly Kaggle News」を横断検索できる仕組みを作った

概要 毎週金曜日に更新しているニューズレター「Weekly Kaggle News」を横断検索できる仕組みを作りました GitHubのレポジトリに全データを蓄積し、左上の検索ボックスからレポジトリ内を検索できます 最新号のデータをAPIで取得し、GitHub Actionsで自動更…

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

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

Basketball Behavior Challenge 1st Place Solution

本記事について 「スポーツアナリティクス Advent Calendar 2020」*1の1日目の記事です。 12月13日開催の「Sports Analyst Meetup #9」*2で発表予定の内容をまとめました。 概要 2019年12月〜2020年9月に開催されていた「Basketball Behavior Challenge: BBC…

日本語BERTを用いた会社名の埋め込み

以前に参加したNishika「財務・非財務情報を活用した株主価値予測」コンペ*1で検討していたタイトルの技術について、別コンペで使う可能性があったので改めてコードを整理していました。結局使わなかったですが、せっかくまとめたのでブログ記事として供養し…

「SciPy Japan 2020」で Kaggle チュートリアルを担当(10月30日)

10月30日からオンライン開催される「SciPy Japan 2020」にて、初日朝9:00〜12:30のチュートリアル講座を担当します。本記事では「SciPy Japan」の紹介と、参加される方向けのご案内を掲載します。 Tutorial: Pythonで機械学習コンペティション「Kaggle」をは…

Kaggle「OpenVaccine: COVID-19 mRNA Vaccine Degradation Prediction」コンペ参加録

Kaggle「OpenVaccine: COVID-19 mRNA Vaccine Degradation Prediction」コンペ*1に参加し、銀メダルの77位でした。 解法はdiscussion*2に簡単にまとめましたが、公開Notebookからの派生でモデルを作り、CVの良い8つのモデルの平均を取りました。 1位相当の提…

SIGNATE「ひろしまQuest2020#stayhome【アイデア部門】」提出資料

以前に参加していたSIGNATE「ひろしまQuest2020#stayhome【アイデア部門】」*1について、自分の提出資料を公開しました。残念ながら入賞はできませんでしたが、興味関心のある野球のデータを分析できて非常に楽しいコンペでした。入賞者以外の成果物共有を許…

非負値行列因子分解を用いたKaggleコンペ推薦

非負値行列因子分解を用いて、Kaggleコンペを推薦する仕組みを考えました。 手法 実験 データセット 実装 デモアプリ 今後の展望 コールドスタート デプロイ おわりに 手法 いくらでも高度なやり方はあり得ますが、手っ取り早い方法として行列分解を試しまし…

「Basketball Behavior Challenge BBC2020」で4チーム中1位に

9月1日まで開催されていた「Basketball Behavior Challenge BBC2020」*1というコンペで1位になりました*2。選手とボールの座標推移からスクリーンプレイの有無を判定するタスクで、分析していて楽しいコンペでした。 解法の概要とスコアの推移は下図の通りで…

自分のTwitter投稿内のURLを分析してみた

これは何? 次の記事に着想を得て、自分のデータでやってみました。具体的には、2015年6月から現在までの自分のTwitter投稿から、全部のURLを抽出し、ドメイン単位で集計しました。 www.buzzfeed.com データの取得 twilog*1に自分の投稿データが保存されてい…

Pandasのパイプラインを作る「pdpipe」を使ってみた

Pandasのパイプラインを作る「pdpipe」というライブラリを知ったので、少し触ってみました。本記事では、簡単な使い方および良かった点・悪かった点をまとめます。 Pandas処理の「パイプライン」を作るライブラリがあるらしいBuild pipelines with Pandas us…

streamlitでwebアプリ作成

少し前に話題になっていた「streamlit」を用いて、簡単なwebアプリを作ってみました。デザイン部分をほとんど意識せず、お手軽にwebアプリを作成できます。公式ドキュメントも充実しており、分かりやすかったです。細かいデザインに手を入れる必要がない場合…

言語処理100本ノック 2020「59. ハイパーパラメータの探索」

問題文 nlp100.github.io 問題の概要 学習アルゴリズムとして「RandomForestClassifier()」も利用し「max_depth」の値を調整します。 import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestC…

言語処理100本ノック 2020「58. 正則化パラメータの変更」

問題文 nlp100.github.io 問題の概要 学習時の「C」の値を調整することで、学習・予測結果が変わります。 import matplotlib.pyplot as plt import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy…

言語処理100本ノック 2020「57. 特徴量の重みの確認」

問題文 nlp100.github.io 問題の概要 ロジスティック回帰を用いた場合は「.coef_」で特徴量の重みを確認できます。今回は値の絶対値に興味があるので、事前にソートした上で上位・下位10個の特徴量を出力します。 import joblib clf = joblib.load('ch06/mod…

言語処理100本ノック 2020「56. 適合率,再現率,F1スコアの計測」

問題文 nlp100.github.io 問題の概要 適合率,再現率,F1スコアはそれぞれ「precision_score()」「recall_score()」「f1_score()」で計算できます。「average」には「'micro'」「'macro'」などが指定可能*1です。 import pandas as pd import joblib from sk…

言語処理100本ノック 2020「55. 混同行列の作成」

問題文 nlp100.github.io 問題の概要 混同行列は「confusion_matrix()」で作成できます。 import pandas as pd import joblib from sklearn.metrics import confusion_matrix X_train = pd.read_table('ch06/train.feature.txt', header=None) X_test = pd.r…