静かなる名辞

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

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


【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になるので気をつけよう

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

【python】sklearnでQuadraticDiscriminantAnalysis(二次判別分析)を試す

はじめに 線形判別分析は非線形な分布に対応できないのでだいたいイマイチなパフォーマンスになるのですが、QDA(二次判別分析)だと若干緩和されます。 二次判別分析はその名の通り分離境界が二次関数になります。ということは、非線形性はありますが、大し…

TypeError: list indices must be integers or slices, not ***等の原因と対処法

はじめに pythonを触り始めたばかりの人は、よくこんなエラーに遭遇すると思います。 TypeError: list indices must be integers or slices, not *** ***の部分はfloatだったりlistだったりstrだったりといろいろありますが、とにかくこんなエラーです。 ま…

sklearnで正則化回帰(Ridge, Lasso, ElasticNet)するときはCV付きのモデルがいいよ

はじめに 正則化回帰は割と定番のモデルなのですが、sklearnのAPIリファレンスをよく見ると、CVが末尾についたモデルがあることがわかります。 Lasso→LassoCV Ridge→RidgeCV ElasticNet→ElasticNetCV API Reference — scikit-learn 0.21.2 documentation な…

【python】相関係数行列をstatsmodelsを使って描く

はじめに 相関係数行列を描く方法としては、pandasとseabornを使う方法などが一般的です。しかし、statsmodelsで行う方法も実は存在します。pandas+seabornでやる場合 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seabo…

ブログで直帰率が高いことは問題ではない。満足して帰っていれば

はじめに ブログをある程度真面目に運営している人は、googleアナリティクスなんかを入れて色々な指標を日々確認していると思います。指標が悪いと、なんか問題があるのではないかと思いがちです。 当ブログは直帰率が高いです。8割以上といったところです。…

pythonで相関係数を計算する方法いろいろ3種類

はじめに pythonで相関係数を計算する方法はいろいろあります。確認したら、主要ライブラリだけで3つありました。 いろいろあるということは用途によって使い分けられるということなので、淡々と書いていきます。 なお、念のために断っておくと、ここで書い…