静かなる名辞

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

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


【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を使って適当にグラフを並べるのはよくある処理だと思います。しかし、きれいに長方形で配置できないときもあります。タイル状に作るので、場合によ…

【python】機械学習でpandas.get_dummiesを使ってはいけない

「pandasのget_dummiesでダミー変数が作れるぜ」という記事がとてもたくさんあって初心者を混乱させているのですが、これは「データ分析」には使えても「機械学習」には向きません。もう少し正確に言い換えると「訓練データからモデルを作り、未知のデータの…

【python】クラスを関数として使う

はじめに クラスはcallされたら自分のクラスのインスタンスを返さないといけないと思っていませんか? 一般論としてはその通りなのですが、Pythonではそうしないメカニズムも用意されています。 __new__を使えば割となんでもできます。もっとも、実用的な用…

【python】scikit-learnで大規模疎行列を扱うときのTips

はじめに 自然言語処理などで大規模疎行列を扱うことがあります。一昔前はNLPといえばこれでした(最近は低次元密行列で表現することのほうが多いですが)。 疎行列はその特性をうまく生かして扱うとパフォーマンス上のメリットが得られる反面、うかつにdens…

【python】itertools.chainを使って複数のiterableを一つにまとめる

概要 複数のiterable(リストとか)を結合させてループさせたいときがあります。 >>> lst1 = [1, 2, 3] >>> lst2 = [4, 5, 6] >>> # 1, 2, 3, 4, 5, 6というループをやりたい 連結すればできたりしますが、余計なメモリを確保するのでスマートではないし、パ…

【python】namedtupleはすごい(きもちわるい)

namedtupleは存在は知ってたけど、使い方を知ったら「すげえ(きめえ)」という感想にしかならなかったので、記事に書きました。

list, tuple, dict, setの基本的な使い方、相違点、使い分け、応用など

pythonでよく使う組み込みのコレクション型には、list, tuple, dict, setなどがあります。ただ、なんとなく使っている、いつもlist、それぞれ微妙に使い勝手が違って困る、という人も多いと思います。そこで、これらについて解説します。

【python】code.pyも作っちゃだめだよという話

概要 実行時カレントディレクトリにcode.pyを置いておいたら訳のわからない落ち方をした。 現象 なんかimportしたらまともに動かなかった。調べると、pytest→pdb→codeという流れでimportして、自作のcode.pyはエラーが出るコードだったのでそこで止まってた…

【python】標準データ型での二次元配列の表現あれこれのアクセス速度

はじめに 俗に言う「二次元配列」をpythonで表現しようとすると、listのlistで書くというのが一番最初に思いつくやり方だと思います。 速度のこととか考えるとどうやるのがいいのか? ということは実はあまり知らなかったので、この際いろいろ試してみます。…

【python】numpyが入ってない標準Pythonでnanをゲットする方法

はじめに nanの値を取得したいときは、普通はnumpyを使うと思います。 >>> import numpy as np >>> np.nan nan まあ、そんなシチュエーションそもそもあまりないという話ですが。じゃあ、numpyがないときは? 即答できる人はあまりいないと思います。 リテラ…

【python】bool(nan)とかnanをastype(bool)するとTrueになるので気をつけよう

なんのことなのか タイトルの通りです。いやまあ、確かにPythonの言語仕様上そうなんですが、釈然としない気も・・・ >>> import numpy as np >>> bool(np.nan) True >>> np.array([np.nan]).astype(bool) array([ True]) * なんで困るのか 返り値がnanにな…