2019-07-01から1ヶ月間の記事一覧
はじめに nanの値を取得したいときは、普通はnumpyを使うと思います。 >>> import numpy as np >>> np.nan nan まあ、そんなシチュエーションそもそもあまりないという話ですが。じゃあ、numpyがないときは? 即答できる人はあまりいないと思います。 リテラ…
なんのことなのか タイトルの通りです。 >>> import numpy as np >>> bool(np.nan) True >>> np.array([np.nan]).astype(bool) array([ True]) いやまあ、確かにPythonの言語仕様上そうなんですが、釈然としない気も・・・ なんで困るのか 0かそれ以外かをそ…
はじめに 線形判別分析は非線形な分布に対応できないのでだいたいイマイチなパフォーマンスになるのですが、QDA(二次判別分析)だと若干緩和されます。 二次判別分析はその名の通り分離境界が二次関数になります。ということは、非線形性はありますが、大し…
はじめに pythonを触り始めたばかりの人は、よくこんなエラーに遭遇すると思います。 TypeError: list indices must be integers or slices, not *** ***の部分はfloatだったりlistだったりstrだったりといろいろありますが、とにかくこんなエラーです。 ま…
はじめに 正則化回帰は割と定番のモデルなのですが、sklearnのAPIリファレンスをよく見ると、CVが末尾についたモデルがあることがわかります。 Lasso→LassoCV Ridge→RidgeCV ElasticNet→ElasticNetCV API Reference — scikit-learn 0.21.2 documentation な…
はじめに 相関係数行列を描く方法としては、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プロセス自身のメモリ消費量を計算したくなるときがある。やり方を知らなかったけど、頑張って検索したら出てきたのでメモ。 import os import psutil process = psutil.Process(os.getpid()) print(process.memory…
概要 自然言語処理やテキストマイニングをしていると文単位で処理・分析したいということはたまにあるので、テキスト(複数文)→センテンス(単一の文)という変換をしたくなることがあります。 英語の場合は、nltkを使うと簡単です。 nltk.sent_tokenizeで…
はじめに 指数関数って右半分の形だけなら、二次関数になんとなく似ていますよね。二次多項式を持ってくれば近似的にできそうな気ができるので、やってみましょう。 とはだいたい同じようなものじゃないの? という話です。 プログラム pythonのscipyを使い…
はじめに 当ブログは見ての通りたくさん広告を貼っていますが、こういうことをしていると「どれくらいPVを稼げば、記事を書く労力に対して儲けが割に合うのかなぁ」ということが気になってきます。そこで常日頃から考えていたことを軽く書いておきます。 テ…
はじめに 2つのnumpy配列が同一であるかどうか調べたいシチュエーションは、ままあるでしょう。 で、こうする訳です。 >>> import numpy as np >>> a = np.array([1,2,3]) >>> b = np.array([1,2,3]) >>> (a == b).all() True すべての要素同士を比較して、…
はじめに 疎行列はメモリ消費こそ少ないものの、scikit-learnで使うと内部でnumpy配列に変換されたりしてあまり恩恵を受けられないことが多いです。 でも、変数選択に使うときはどうやら効くっぽいです。 関連記事 scikit learnのモデルに疎行列(csr_matrix…
はじめに 経済系の分析などで、目的変数を対数変換して分析するというケースがあります。scikit-learnはそのようなケースもサポートしています。 どうやったらいいのかわからなくて、自分で変数を変換している人も中にはいるかと思いますが、モデル構築まで…
はじめに 回帰などで非線形の効果を取り扱いたいとき、多項式回帰は定番の方法です。また、交互作用項も使うと有用なときがあります。 pythonユーザはいきなりSVRやランダムフォレスト回帰などの非線形回帰を使うことが多い気もしますが、線形モデルでも特徴…
はじめに 当サイトは見て分かる通りの零細プログラミングブログです。大したアクセスを稼いでいないので、ぶっちゃけPVのこととか気にしても仕方ありません。考える暇があったら記事書いた方が良いというやつですね。 が、実を言うと中の人は割と頻繁にアク…
はじめに random_stateを設定して「結果を固定したい」ことはよくありますが、「結果を変えたい」ってあんまりないですよね。いろいろな条件下で比較して検定するときくらいでしょうか。 それでも、変わるだろうなと思って変えたら変わらなくて困るというパ…
はじめに ロジスティック回帰はいうまでもなく線形分類器です。なので、非線形の分類問題は本来解けません。ロジスティック回帰が線形分離不可能な分類問題を解けないことの説明 - 静かなる名辞 しかし、特徴量を非線形変換したり、交互作用項を入れたりして…
はじめに 以前に編集距離が計算された文字列間の位置関係をMDSを使ってまったく同じことをしましたが、今度はカーネルPCAでやってみます。 違いとしては、MDSは距離行列から計算を行うのに対してカーネルPCAは類似度行列から計算を行えるということがあると…
はじめに 多くの機械学習手法では入力される特徴量はベクトルで表されますが、ベクトルとして表現するのが難しい情報もあります。そのような場合でも、個体間の類似度さえ計算できれば機械学習を使えるというケースがあります。これが世にいうカーネル法です…
はじめに ロジスティック回帰が線形分離不可能な分類問題を解けないことは有名な話です。だけど、「いや解けるだろ」「なんで解けないの???」と言われてしまうことがあるので*1、それができないことを説明しておこうと思います。 なお、この記事はこちら…
自然言語処理などでお馴染みのコサイン類似度。これを1から引いたものを「コサイン距離」と称している文献も散見されますが、この「コサイン距離」は距離としての性質を満たしません。それがどういうことなのかをこの記事で説明していきます。
概要 pythonの正規表現モジュールreでは、デフォルトでは^は「文字列の先頭」に、$は「文字列の末尾」にマッチします。 なので、次のような挙動になります。 >>> s = "hoge\nfuga\n" >>> import re >>> re.findall(r"^[hf]|[ea]$", s) ['h', 'a'] # ['h', 'e…
はじめに 線形判別分析など、線形の判別モデルは係数を使って各クラスに重要な特徴を取り出すことができます。 今回はロジスティック回帰を使って、20newsgroupsのデータセットから各クラスの特徴語を取り出してみます。 実験 以下のようなコードを走らせま…
はじめに SVMはヒンジ関数を使ってマージン最大化を行い、境界付近のデータに基づいて分離超平面を決定する……ということはよく言われています。でも、実際のデータで確認している図はあまり見たことがありません。 sklearnのSVMのドキュメントを読んでいたら…