静かなる名辞

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

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


【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つありました。 いろいろあるということは用途によって使い分けられるということなので、淡々と書いていきます。 なお、念のために断っておくと、ここで書い…

Pythonプロセスの自分自身のメモリ使用量を調べる

簡単なテストや処理をしているとき、Pythonプロセス自身のメモリ消費量を計算したくなるときがある。やり方を知らなかったけど、頑張って検索したら出てきたのでメモ。 import os import psutil process = psutil.Process(os.getpid()) print(process.memory…

nltkでテキストを文・センテンス単位で分割する

概要 自然言語処理やテキストマイニングをしていると文単位で処理・分析したいということはたまにあるので、テキスト(複数文)→センテンス(単一の文)という変換をしたくなることがあります。 英語の場合は、nltkを使うと簡単です。 nltk.sent_tokenizeで…

指数関数を二次多項式で近似してみる

はじめに 指数関数って右半分の形だけなら、二次関数になんとなく似ていますよね。二次多項式を持ってくれば近似的にできそうな気ができるので、やってみましょう。 とはだいたい同じようなものじゃないの? という話です。 プログラム pythonのscipyを使い…

記事の寿命から考える、1記事で1日に得るべきPVとブログの収益性

はじめに 当ブログは見ての通りたくさん広告を貼っていますが、こういうことをしていると「どれくらいPVを稼げば、記事を書く労力に対して儲けが割に合うのかなぁ」ということが気になってきます。そこで常日頃から考えていたことを軽く書いておきます。 テ…

numpyでnanを含む配列の同値性をちゃんと計算する

はじめに 2つのnumpy配列が同一であるかどうか調べたいシチュエーションは、ままあるでしょう。 で、こうする訳です。 >>> import numpy as np >>> a = np.array([1,2,3]) >>> b = np.array([1,2,3]) >>> (a == b).all() True すべての要素同士を比較して、…