天色グラフィティ

機械学習やプログラミングでいろいろ作って遊ぶブログ

Python

【discord.py】Among Usのためにランダムに人を選ぶDiscord Botを作りました

現在このbotは公開を停止しています。申し訳ありません。 discord.pyを使ってDiscordのbotを2時間くらいで作った話を書きます。 なんで作ったか Among Usはクルーメイト(村人)とインポスター(人狼)が争うゲームなのですが、MODを利用して「狂人」「てる…

ICNR: Sub-Pixel Conv使用時のcheckerboard artifactを防ぐ初期化

ニューラルネットワークで画像を拡大(アップサンプリング)する際、Transposed ConvolutionやSub-Pixel Convolutionという手法を使います。 しかし、これらの手法を用いた場合、拡大した画像に格子状の模様(checkerboard artifact)が発生することが知られてい…

なぜn_estimatorsやepochsをパラメータサーチしてはいけないのか

ハイパーパラメータを探索するため、グリッドサーチやOptunaなどを利用することがあると思います。 しかし、「ハイパーパラメータ探索してみた」のようなQiita記事などでは間違って書かれていることも多いのですが、XGBoostやLightGBMの n_estimators ( num_…

Dockerでデータ分析環境を手軽に作る方法

何かデータ分析を行わなければいけないとき、手軽に分析環境を用意したいというニーズがあります。 Jupyter Notebook上でnumpy、pandas、matplotlib、scikit-learnあたりが使えれば十分でしょうか。XGBoostやLightGBMといったライブラリも使えるようにしてお…

決定木は本当に変換に依存しないのか?

決定木をベースとしたモデル(RandomForestやXGBoost、LightGBMなど)は正規化などの前処理が必要ないと言われています。 理由として挙げられるのは「決定木は特徴量の大小関係のみに着目しており、値自体には意味がないから」というものです。 先日もkaggler-…

コピペで使える。Kaggleでの実験を効率化する小技まとめ

この記事はKaggle Advent Calendar 2018の20日目の記事です。当初の予定ではPLAsTiCCコンペの振り返りをするはずだったのですが、時空の狭間に吸い込まれた結果0サブミットでフィニッシュしてしまいました。何ででしょうね。 そこで、代わりにKaggleで使える…

LightGBMのcallbackを利用して学習履歴をロガー経由で出力する

KaggleなどでLightGBMを使っていて学習履歴を見たとき、ログファイルにも残してほしいと思うことがあります。 公式にはそのような機能は実装されていないようなので、LightGBMのコールバックで対応したいと思います。 LightGBMではfitメソッドの引数としてコ…

Kaggleで使えるFeather形式を利用した特徴量管理法

みなさま、Kaggle楽しんでいますでしょうか。 僕は現在Home Credit Default RiskとSantander Value Prediction Challengeに参加しています。 前回のKaggle記事ではpandasのテクニックについてまとめました。 多くのアクセスをいただき、人生初のホッテントリ…

Kaggleで使えるpandasテクニック集

PythonでKaggleなどのデータ分析を行う際、pandasでゴリゴリ作業をすることが多いかと思います。 最近知って「めっちゃ便利やん!」ってなったものをまとめておきたいと思います。 全部の関数にドキュメントへのリンクを付けたので参考にしてください。 今回…

pandas + matplotlibで描くヒストグラムいろいろ

データ解析コンペの初期段階では、データを可視化して眺め、特徴を探すという探索的データ分析(EDA)が行われます。 Pythonでデータ分析している場合、可視化にはpandasのプロット機能、もしくはmatplotlibを使うことが多いでしょう。 今回はヒストグラムに絞…

Mac + matplotlibで日本語を表示する

タイトルにMacと入れたのはそれでしか確認していないから。WindowsやLinuxでもパスだけ変えれば当てはまるかもしれない。 TL;DR matplotlibで日本語表示できる.ttfフォントをインストールしましょう ~/.matplotlib/matplotlibrcに書きましょう 【重要】~/.ma…

機械学習コンペで使うスニペットたち

メモです。自分がコピペでぺたぺたする用なので随時更新です。 HyperoptでLightGBMモデルをチューニングする from hyperopt import fmin, hp, tpe def objective(params): params['num_leaves'] = int(params['num_leaves']) params['max_depth'] = int(para…