静かなる名辞

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


可視化

【python】seabornで棒グラフを信頼区間付きで描く

はじめに 信頼区間付きの棒グラフはよく見かけます。複数グループの差が優位かどうかという議論に向いているからです。 他のツールだと割と簡単に描けるグラフだったりするのですが、Pythonでやろうとするとmatplotlibは勝手に信頼区間を計算してくれません…

【python】seabornで折れ線グラフを信頼区間付きで描く

はじめに 信頼区間というとなんとなく棒グラフにつけるものという印象がありますが、折れ線グラフでも計算すること自体はたやすくて、しかもけっこうかっこいいグラフになります。 大抵は別に無くても良いのですが、たまに信頼区間が出ていると便利なときが…

【python】matplotlibのboxplotで外れ値を表示しないようにする

はじめに matplotlibのboxplotを使うと簡単に箱ひげ図が描けます。ただし、デフォルト設定では外れ値が黒い円で表示されます。 どんなデータでも、サンプル数が多いと一定数の外れ値は出てしまいます。ただ、図を見る人は気にするところですし、外れ値がたく…

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

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

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

はじめに ロジスティック回帰はいうまでもなく線形分類器です。なので、非線形の分類問題は本来解けません。ロジスティック回帰が線形分離不可能な分類問題を解けないことの説明 - 静かなる名辞 しかし、特徴量を非線形変換したり、交互作用項を入れたりして…

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

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

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

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

SVMのsupport vectorを可視化してみた

はじめに SVMはヒンジ関数を使ってマージン最大化を行い、境界付近のデータに基づいて分離超平面を決定する……ということはよく言われています。でも、実際のデータで確認している図はあまり見たことがありません。 sklearnのSVMのドキュメントを読んでいたら…

多次元尺度構成法(MDS)で文字列の編集距離を可視化してみる

はじめに ベクトルとして表現するのが難しいけど、個体間の距離(非類似度)は定義できる……というデータがたまにあります。こういうとき、多次元尺度構成法を使うと可視化がうまくいきます。 ということで、編集距離を可視化してみようと思います。 データ h…

決定木をいろいろな方法で可視化する

はじめに 決定木はデータが分類される過程がわかりやすいことから、可視化に向いています。特にサンプル数が少なく、データの特徴量の次元数が少ないようなケースではかなり直感的な結果が得られます。 決定木の可視化では、原理的には単に図を描いて可視化…

sklearn.tree.plot_treeをJupyter Notebookで使うと決定木の可視化が捗る・・・かな? matplotlibでできるよ

はじめに sklearnでは様々な方法で決定木を可視化できるのですが、これまでの方法ではそのためにはgraphvizを介する必要がありました。これは面倒くさく、トラブルの原因にもなりやすいものでした。 scikit-learn 0.21以降ではmatplotlibでプロットしてくれ…

sklearnとmatplotlibでiris(3クラス)の予測確率を可視化した話

はじめに よく分類器の性質などを把握するために、2次元で可視化している図があります。 特に予測確率なんかを平面的に出せるとかっこいいですよね。つまり、こういうのです。Classifier comparison — scikit-learn 0.21.3 documentation以前の記事より君はK…

AdaBoostとRandomForestの比較

AdaBoost(アダブースト、もしくはエイダブースト)は代表的なアンサンブル学習アルゴリズムとしてよく取り上げられるものですが、実用的に使っている事例はあまり見かけません。ランダムフォレストでいいじゃんとなっていることが多いのではないでしょうか…

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

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

本当は怖いSVMと交差検証

概要 SVMと交差検証を組み合わせて使うと、たとえ交差検証で高いスコアが出て汎化性能確保できた! と思っても想像とかけ離れた分離超平面になっていることがままある。 なのでこの組み合わせは少し怖いということを説明する。 コード irisを分類します。二…

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

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

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

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

【python】sklearnのRFE(Recursive Feature Elimination)を使ってみる

はじめに RFE(Recursive Feature Elimination)というものがあることを知ったので試してみたいと思いました。 RFEは特徴選択の手法で、その名の通り再帰的にモデルを再構築しながら特徴を選択するという特色があります。sklearn.feature_selection.RFE — scik…

決定木回帰、ランダムフォレスト回帰、SVRを可視化してみた

はじめに 最近回帰モデルで遊んでいるのですが、決定木系の回帰に好印象が持てなくなりました。 だって、決定木ってオーバーフィット番長ですよ? 回帰とは名ばかりのカクカクの回帰曲線が出てくることは目に見えています。 「そんなあなたのためにランダム…

【python】SOMのライブラリSomocluはかなりおすすめ

SOM(Self-organizing maps:自己組織化写像)は割と古めの、データの可視化手法です(それ以外にも使えると思いますが)。 今回はpythonのSOMライブラリSomocluを使ってみたら、けっこう良かったというネタです。 目次 SOMの概要 ライブラリがない それでも頑…

【python】sklearnで因子分析を試す

pythonで因子分析をやる人はあまりいないようだが、sklearnにはしっかりモデルが存在している。ついさっき気づいた。sklearn.decomposition.FactorAnalysis — scikit-learn 0.20.1 documentation 因子分析自体は前からどんなものなのか興味があり、かといっ…

【python】pythonで主成分分析のバイプロット

バイプロット(Biplot)という主成分分析(PCA)の結果の可視化方法があります。 すごく大雑把に言うと、PCAによる写像の前の空間の各特徴(軸)が写像先の空間のどこに向いているかを可視化する方法です。 具体的には、主成分ベクトル(因子負荷量などを使…

【python】numpyで主成分分析を実装してみた

numpyでPCA(principal component analysis:主成分分析)を実装してみました。自分の理解を深めるためです。 sklearnに実装されているものと同じ結果を出すことを目標にしました。最終的には上手く行きました。 目次 概要 実装 結果 まとめ 概要 主成分分析…

【python】カーネル主成分分析を試してみる

カーネル主成分分析(Kernel PCA)はカーネル法と主成分分析を組み合わせて用い、データを非線形次元圧縮する方法です(こんな説明で良いのか・・・)。 カーネル法のことは勉強中・・・というか正直勉強しようとしてもよくわからないで跳ね返されるのをこれ…

【python】sklearnのPCAで相関行列を使う

主成分分析には共分散行列を用いる方法、相関行列を使う方法がある。 sklearnのPCAを見ると、これに対応するオプションは存在しない。sklearn.decomposition.PCA — scikit-learn 0.20.1 documentation ずっと不思議に思っていたが、ググってたらこんなものを…

【python】クラスタリング結果を積み上げ棒グラフで可視化する

ラベル付きデータをクラスタリングすることがよくあります(そんな頻繁にあるか? まあ、クラスタリングの使い方次第でたまにはあるからこうして記事にしている訳ですが)。各クラスタの中身がどんなラベルで構成されているのか、知りたくなります。積み上げ…

【python】pca、mds、nmds、tsneとmatplotlibでデータの可視化をしてみる

タイトルの通りのことをする。データセットはirisとdigitsを使ってみる。 ソースコード。 # coding: UTF-8 from sklearn.datasets import load_digits, load_iris from sklearn.manifold import MDS, TSNE from sklearn.decomposition import PCA from matpl…