静かなる名辞

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


scipy

scikit-learnのStandardScalerで疎行列型のまま標準化する

ことのあらまし データの標準化は機械学習の前処理としてとても重要です。そして疎行列型データ構造は、スパースなデータを表現するためにはとても適しています。 残念ながら、普通に疎行列型を標準化しようとすると、疎行列性が失せます。考えてみればわか…

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

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

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

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

【python】scipyでt検定する方法まとめ

t検定の中でもよく使われるのが2群の標本の平均に差異があるかどうかの検定です。t検定はscipyを使うと簡単に実施することができます。その方法を紹介します。

scikit-learnのモデルに疎行列(csr_matrix)を渡したときの速度

はじめに sklearnのモデルには疎行列を取れるものもたくさんありますが、この場合速度差があったりするのでしょうか。 いろいろなデータとモデルで検証を行ってみました。 目次 はじめに 実験1:digitsを分類させてみる 実験2:多項ナイーブベイズについても…

【python】sklearnのRandomizedSearchCVを使ってみる

はじめに RandomizedSearchCVなるものがあるということを知ったので、使ってみます。うまく使うとグリッドサーチよりよい結果を生むかもしれないということです。sklearn.model_selection.RandomizedSearchCV — scikit-learn 0.21.3 documentation グリッド…

scipy.optimize.curve_fitを使っていろいろな関数にフィットさせてみる

はじめに scipy.optimize.curve_fitを使うと曲線あてはめができます。いろいろな関数にフィッティングさせてみて、うまくいくかどうか試してみます。scipy.optimize.curve_fit — SciPy v1.3.0 Reference Guide f(x) = x + a ただの足し算。 import numpy as …

【python】scipyで線形最小二乗法

概要 scipyのscipy.optimize.lsq_linearで最小二乗法が使えます。 使い方 最低限必要な引数は、 A いわゆる説明変数です。基本的には(データ数, 次元数)のshapeでいいのですが、バイアス項を入れたければすべて1にした列が要ります。 b いわゆる目的変数です…

【python】scipyのpdistとsquareformの使い方と仕組み

はじめに scipyで距離行列を扱うときはscipy.spatial.distanceのpdist, squareformなどを主に使いますが、長年よくわからないままに使っていたので、整理してまとめておきます。 なお、以下のドキュメントを参考にします。 scipy.spatial.distance.pdist — S…

【python】scipyで階層型クラスタリングするときの知見まとめ

はじめに scipyの階層型クラスタリングを使う機会がありましたが、使い方がわかりづらいと思ったのでまとめておきます。 目次 はじめに 関数がいっぱいある 使い方 linkage fcluster cophenet dendrogram 実践編 データを作る 手法を選ぶ クラスタに分ける …

scipy.interpolate.griddataの内挿方法による違いを比較

はじめに 以前、3次元のサンプルデータを内挿してmatplotlibでうまくプロットする方法について記事にしました。xyzの点データを内挿してmeshgridにしmatplotlibでプロットする - 静かなる名辞 この記事では内挿のアルゴリズムをデフォルトのlinearにして使い…

xyzの点データを内挿してmeshgridにしmatplotlibでプロットする

はじめに pythonでmatplotlibを使って作図するとき、三次元のデータでpcolormeshとかcontourでやるような等高線プロットを作りたいんだけど、手持ちのデータはxyzが紐付いた点のバラバラな離散データだけ……ということがままあります。 散布図ならそれでも良…

scipyで確率分布のサンプルと確率密度関数を生成する

scipy.statsでは様々な統計用のユーティリティが提供されています。大抵の分布はあるし、パラメータも好きに設定できます。numpyにも充実したrandomモジュールがありますが、こちらは分布に従うデータの生成や、データのサンプリングなどしかできません。「…

【python】pandasでデータを標準得点(z得点)に変換

データの正規化(標準化)をpandasでもやってみる。 正規化、標準化とは、データを分散1、平均0に変換する操作である。スポンサーリンク (adsbygoogle = window.adsbygoogle || []).push({}); 自分で書いてもできるが、scipyの関数を使うと簡単にできる。 >>…

【python】順列・組み合わせを計算する方法

Pythonで、順列(Permutation)と組み合わせ(Combination)がほしくなるときがある。また、順列・組み合わせの数がほしくなることもある。順列・組み合わせそのものはitertoolsで、その数はscipyで出せる。計算方法についてまとめておく。

【python】距離・非類似度行列を計算する

記事概要 非類似度行列(距離行列)の計算方法について説明する。 計算方法 対象データと使う非類似度 とりあえず、データを5つ作る。irisの先頭5要素を抽出する。 from sklearn.datasets import load_iris iris = load_iris() data = iris.data[:5] 5*5の非…

【python】scipy.statsのzscoreで警告が出るときの対策

概要 z得点を計算しようとしたとき、このような警告を見かけることがあります。 RuntimeWarning: invalid value encountered in true_divide これが出た場合、結果にはnanが含まれています。なので後段の分析で落ちたりします。 >>> import numpy as np >>> …

【python】95%信頼楕円/確率楕円を描画する

「ライブラリあるやろw」と思ったら、なくて顔面蒼白になった。 しょうがないから調べて実装した。 理論的なもの ちゃんと数式を書いて説明する気概がないので、アバウトに説明する。 適当な二次元正規分布のデータがあるとする。PCAと同じ要領で分散共分散…

【python】pythonで情報エントロピーの計算

情報理論でとてもよく出てくる情報エントロピー。計算するにはどうすれば良いのだろう? 選択肢1:定義どおり作る 定義はとても簡単です。注意するべきことは、入力に0が来たときのパターンを想定しないで作るとmath domain errorが出る(は定義できないから…