静かなる名辞

pythonとプログラミングのこと

2019/03/22:TechAcademyがteratailの質問・回答を盗用していた件
2019/03/26:TechAcademy盗用事件 公式発表と深まる疑念


sklearnで混同行列をヒートマップにして描画するplot_confusion_matrix

はじめに scikit-learnのv0.22で、混同行列をプロットするための便利関数であるsklearn.metrics.plot_confusion_matrixが追加されました。 使いやすそうなので試してみます。 使い方 リファレンスはこちらです。sklearn.metrics.plot_confusion_matrix — sci…

pandasで年月日時刻の列を結合して一列にする(datetime64で)

概要 ローデータ(生データ)を取り込むと、年月日が独立して入っている感じの嫌なデータになっていることがあります。 年,月,日 1996,8,1 1998,12,2 2012,05,3 こういうのは嬉しくないので、できるだけ単一のdatetime風の型に変換しておきたいのですが、意…

【python】UnboundLocalErrorの原因と対処法

はじめに 関数の中で関数の外の変数を操作するようなコードを書いていると、たまに下記のようなエラーが出ます。UnboundLocalError: local variable '***' referenced before assignment 初歩的ですが、意外とまとまった良い解説がないので、記事にしておき…

scikit-learnで重み付きk近傍法(Weighted kNN)を試してみる

はじめに k近傍法には、近傍点の重み付けをどうするかで複数のやり方が考えられます。普通のk近傍点では予測対象の点のkつの近傍点を取ってきて、そのクラスを単純に多数決します。一方で、より近い点にはより大きい重みを持たせるという発想もまた自然です…

【python】キーワード引数と可変長キーワード引数(kwargs)の競合によるエラー

はじめに 既存の関数のwrapperを作るときなど、可変長キーワード引数を使いたいときがあります。 これは通常のキーワード引数と併用できますが、稀に問題になることがあります。 関数定義のとき 定義するときは割と単純で、問題も少ないです。 以下のような…

【python】seabornで棒グラフを信頼区間付きで描く

はじめに 信頼区間付きの棒グラフはよく見かけます。複数グループの差が優位かどうかという議論に向いているからです。 他のツールだと割と簡単に描けるグラフだったりするのですが、Pythonでやろうとするとmatplotlibは勝手に信頼区間を計算してくれません…

Python対話的インタプリタでアンダースコアが便利(誰も知らない機能)

概要 対話モードだとアンダースコアの変数が自動的にできています。最後に評価した結果が入るようです。 >>> 1 + 2 3 >>> _ 3 これはチュートリアルに書いてあったのですが、他の入門記事で触れられているのを見た記憶はまったくありません。私自身も、チュ…

【python】seabornで折れ線グラフを信頼区間付きで描く

はじめに 信頼区間というとなんとなく棒グラフにつけるものという印象がありますが、折れ線グラフでも計算すること自体はたやすくて、しかもけっこうかっこいいグラフになります。 大抵は別に無くても良いのですが、たまに信頼区間が出ていると便利なときが…

ランダムフォレストを使うなら変数選択はしなくてもいいのか?

はじめに 表題の通りの話をたまに聞きます。「ランダムフォレストは内部で変数選択を行う。なので変数選択は必要ない」という主張です。 しかし個人的には、それはあくまでも 他の手法*1と比べれば変数選択しなかった場合の悪影響が少ない ということであっ…

【python】sklearnのIterativeImputerで欠損値補完

注意:IterativeImputerは本記事の執筆時点(2019年11月)で実験的な実装とされており、最新の仕様等はこの記事の内容と異なる可能性があります。常にstable版の公式のドキュメントを確認してください。 公式のドキュメント sklearn.impute.IterativeImputer…

【python】sklearnのSimpleImputerで欠損値補完をしてみる

はじめに 欠損値補完(nanの処理)はだいたいpandasでやる人が多いですが、最近のscikit-learnはこの辺りの前処理に対するサポートも充実してきているので、平均値で補完する程度であればかえってscikit-learnでやった方が楽かもしれません。 ということで、…

mecab-pythonで品詞を見るときはfeature.splitしない方が速い

はじめに mecab-pythonで形態素解析を行って何らかの処理をするとき、特定の品詞だけ取り出したいということがよくあります。 そういう目的で書かれたコードとして、よくこんなものを見たりすると思います。 import MeCab tagger = MeCab.Tagger() tagger.pa…

【python】matplotlibのboxplotで外れ値を表示しないようにする

はじめに matplotlibのboxplotを使うと簡単に箱ひげ図が描けます。ただし、デフォルト設定では外れ値が黒い円で表示されます。 どんなデータでも、サンプル数が多いと一定数の外れ値は出てしまいます。ただ、図を見る人は気にするところですし、外れ値がたく…

matplotlibで図全体にタイトルを付けるにはsuptitleを使う

はじめに matplotlibではよく一つの図の中に複数のグラフを描きます。そうすると全体に共通してタイトルを付けたくなるのですが、普通にやろうとしても個別のAxesに対して呼んでしまいがちです。 図全体に対してタイトルを付けるには、suptitleを使います。m…

matplotlibでAxesを真っ白にする(x軸とかy軸なんかを消して非表示にする)

matplotlibでAxesを真っ白にする(x軸とかy軸とか目盛りなんかを消して非表示にする) matplotlibでsubplotsを使って適当にグラフを並べるのはよくある処理だと思います。しかし、きれいに長方形で配置できないときもあります。タイル状に作るので、場合によ…