u++の備忘録

python

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でファイルに書き込んでい…

コロケーションの指標「C-value」のPython実装

概要 論文 要旨 C-valueの算出アルゴリズム 計算の具体例 実装 概要 コロケーション("Read a newspaper", "Write a blog" など、慣習的に用いられる英単語の組み合わせ)を抽出したい 以下のブログで紹介されていたコロケーションの指標「C-value」をPython…

遺伝的アルゴリズムで平成から令和に変えてみる

遺伝的アルゴリズムを用いて 'HEISEI' という文字列を 'REIWA' に変えてみました。平成(HEISEI)から令和(REIWA)に遺伝的アルゴリズムで変換するプログラム書いた pic.twitter.com/LefqiaPYBM— u++ (@upura0) April 30, 2019 開始時 終了時 ルール 'HEISEI' …

Tenka1 Programmer Beginner Contest 2019をPythonで解く

atcoder.jp A - On the Way(100点) 必ずしもA A = list(map(int, input().split())) if (A[0] < A[2] < A[1]) or (A[1] < A[2] < A[0]): print("Yes") else: print("No") B - *e**** ********e* *e****e* ****e**(200点) 問題文の通りに実装 N = int(inp…

AtCoder Beginner Contest 124をPythonで解く

予定があったので、リアルタイムでは参加できませんでした。atcoder.jp A - Buttons(100点) AとBを1回ずつ取る場合は、A==Bのときのみ それ以外は同じのを連続で取る A, B = list(map(int, input().split())) if (A == B): print(A + B) else: print(max(A…

AtCoder Beginner Contest 123をPythonで解く

「AtCoder Beginner Contest 123」を解きました(リアルタイムでは参加できませんでした)。atcoder.jp A - Five Antennas(100点) 一番大きい座標と小さい座標の差がKより大きいかで条件分岐 最初問題文のa~eの不等号を見落としていたので無駄にmax, minを…

Kaggle入門記事をQiitaに書きました

先日「Kaggleに登録したら次にやること ~ これだけやれば十分闘える!Titanicの先へ行く入門 10 Kernel ~」という記事の初版を公開しました。qiita.com初めてQiitaに記事を書いたのですが、ありがたいことにTwitter含め大きな反響を頂きました。新年度に心…

「累積和を何も考えずに書けるようにする!」をPythonで解く

「累積和を何も考えずに書けるようにする!」という記事に記載されていた計5問をPythonで解きました。Pythonだと、itertools.accumulateを利用することで1次元累積和が簡単に記述できます。最近話題の「累積和」について色々書いてみました!!!累積和は、…

AtCoder「エクサウィザーズ 2019」をPythonで解く

AtCoder「エクサウィザーズ 2019」に出て、2完でした。atcoder.jpABCのA, B問題を全て埋めていた甲斐があり、3分で2完できました。C問題はTLEが取れませんでした。昼休みに2問解いて、ABCのA, B埋め完了〜C, Dも仕上げていくぞ pic.twitter.com/KNsTUJsJ7a— …

「典型的な DP (動的計画法) のパターンを整理 Part 1 ~ ナップサック DP 編 ~ 」をPythonで解く

2月下旬に「典型的な DP (動的計画法) のパターンを整理 Part 1 ~ ナップサック DP 編 ~ 」の前半7問をPythonで解きました。ABCのD問題で時折出題されるDPの感覚をザックリと掴むことができました。qiita.com 1 ナップサック DP とは 問題 1: 最大和問題 2…

AtCoder Beginner Contest 122をPythonで解く

「AtCoder Beginner Contest 122」に出て、全完でした。A問題で誤読して2WAして号泣スタートでしたが、最後が精進していたDP問題だったので何とか取り戻せた形です。atcoder.jp A - Double Helix(100点) 4通りの場合分け 対応を空目して2WAしたので、明日…

AtCoder Grand Contest 031 AをPythonで解く

「AtCoder Grand Contest 031」に出て、1完でした。atcoder.jp A - Colorful Subsequence(200点) 総当たりで解くとTLE アルファベットを1文字ずつ数え上げて計算する N = int(input()) S = input() M = 10**9 + 7 cnt = [0] * 26 for i in range(N): cnt[o…