静かなる名辞

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

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



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 すべての要素同士を比較して、…

sklearnの変数選択は疎行列型(csr_matrix)でやると速いっぽいよ

はじめに 疎行列はメモリ消費こそ少ないものの、scikit-learnで使うと内部でnumpy配列に変換されたりしてあまり恩恵を受けられないことが多いです。 でも、変数選択に使うときはどうやら効くっぽいです。 関連記事 www.haya-programming.com 実験 淡々とやり…

scikit-learnで目的変数を対数変換したりするTransformedTargetRegressor

はじめに 経済系の分析などで、目的変数を対数変換して分析するというケースがあります。scikit-learnはそのようなケースもサポートしています。 どうやったらいいのかわからなくて、自分で変数を変換している人も中にはいるかと思いますが、モデル構築まで…

scikit-learnのPolynomialFeaturesで多項式と交互作用項の特徴量を作る

はじめに 回帰などで非線形の効果を取り扱いたいとき、多項式回帰は定番の方法です。また、交互作用項も使うと有用なときがあります。 pythonユーザはいきなりSVRやランダムフォレスト回帰などの非線形回帰を使うことが多い気もしますが、線形モデルでも特徴…

ブログのSearch Consoleでの平均CTRや平均掲載順位が下がるのはオッケー。クリック数と表示回数が大切

はじめに 当サイトは見て分かる通りの零細プログラミングブログです。大したアクセスを稼いでいないので、ぶっちゃけPVのこととか気にしても仕方ありません。考える暇があったら記事書いた方が良いというやつですね。 が、実を言うと中の人は割と頻繁にアク…

sklearnのKFoldやStratifiedKFoldでrandom_stateを変えても結果が変わらないとき

はじめに random_stateを設定して「結果を固定したい」ことはよくありますが、「結果を変えたい」ってあんまりないですよね。いろいろな条件下で比較して検定するときくらいでしょうか。 それでも、変わるだろうなと思って変えたら変わらなくて困るというパ…

非線形がなんだ! ロジスティック回帰+多項式でやってやる!

はじめに ロジスティック回帰はいうまでもなく線形分類器です。www.haya-programming.com しかし、特徴量を非線形変換したり、交互作用項を入れたりして使えば、非線形の問題にも十分使えます。参考: 交互作用項を入れればロジスティック回帰でも非線形分離…

カーネルPCAで文字列の編集距離を可視化してみる

はじめに 以前に編集距離が計算された文字列間の位置関係をMDSを使ってまったく同じことをしましたが、今度はカーネルPCAでやってみます。 違いとしては、MDSは距離行列から計算を行うのに対してカーネルPCAは類似度行列から計算を行えるということがあると…

scikit-learnのSVMを自分で計算したカーネルで使う

はじめに 多くの機械学習手法では入力される特徴量はベクトルで表されますが、ベクトルとして表現するのが難しい情報もあります。そのような場合でも、個体間の類似度さえ計算できれば機械学習を使えるというケースがあります。これが世にいうカーネル法です…

ロジスティック回帰が線形分離不可能な分類問題を解けないことの説明

はじめに ロジスティック回帰が線形分離不可能な分類問題を解けないことは有名な話です。だけど、「いや解けるだろ」「なんで解けないの???」と言われてしまうことがあるので*1、それができないことを説明しておこうと思います。 なお、この記事はこちら…

コサイン距離は距離じゃないんだから、勘違いしないでよねっ!

き、記事タイトルに意味なんてないんだからねっ! 自然言語処理などでお馴染みのコサイン類似度。これを1から引いたものを「コサイン距離」と称している文献も散見されますが、この「コサイン距離」は距離としての性質を満たしません。 それがどういうことな…

【python】正規表現モジュールreで行頭・行末にマッチしないときの対処

概要 pythonの正規表現モジュールreでは、デフォルトでは^は「文字列の先頭」に、$は「文字列の末尾」にマッチします。 なので、次のような挙動になります。 >>> s = "hoge\nfuga\n" >>> import re >>> re.findall(r"^[hf]|[ea]$", s) ['h', 'a'] # ['h', 'e…