PandasとNumpyでの相関関係の出し方この広告は、90日以上更新していないブログに表示しています。df.corr()3列でも出来るか確認しておきます。相関関係とは一方が増えると片方が増える(正の相関)、または減る(負の相関)ような関係をいう。正の相関関係の例)車のスピードが速くなると制動距離(停止するまでの距離)も伸びる。負の相関関係の例)気温が高ければ氷の溶ける時間が短くなる。関係をおおざっぱに調べるときに用いる。相関関係と因果関係は違うことに注意。相関係数とは相関係数は相関関係を数値的に示す。標準偏差の積」で割った値。相関係数の値は-1~1の範囲の実数。-1に近いと負の相関関係。0に近いと相関関係はない。1に近いと正の相関関係。NumpyとPandasでのやり方を覚えます。適当なデータを用意してやってみます。97.5データはこちらブレーキが効きはじめてから停止するまでに車が走行した距離(制動距離)を推定しよう。カシオの関数電卓の使い方のページ。グラフで見てみるplt.scatter(v,l)plt.savefig("seidou.png")plt.show()二次関数っぽいグラフになっている。df.corr()データフレームオブジェクトでcorr()メソッドを呼び出すと簡単に相関係数が出せる。相関係数が出せると思ったが...。データフレームを転置してみる。1.000000今度は上手く行った。それぞれのSeriesデータは列にする必要がある。右上と左下の0.966714が相関係数です。1に近いので正の相関関係があることがわかる。3列でも出来るか確認しておきます。ランダムな8個の値をSeriesで作って、上で転置させた行列の3列目に追加し、同様にcorr()メソッドを呼び出す。1.000000できた。リーグ表のように読めば良い。(-0.025)と(-0.150)が追加されている。ランダムな値のSeriesなので0に近い相関係数になっている。SeriesA.corr(SeriesB)SeriesのAとBの相関係数を求めるときはA.corr(B)とすれば出る。'pandas.core.series.Series'>0.9667137237755117値が行列ではなく、一つの値で出て来ました。'corr'リストは不可でした。目次にもどるNumpyでの相関係数の出し方Pandasより簡単。plt複数の配列の相関係数を同時に求めるまずは適当なデータと散布グラフの作成。...])np.corrcoef([配列a,配列b,配列c,...])で一気に行ける。1.000000これもリーグ表と同じ見方でOK。外れ値が相関係数に与える大きな影響ランダム値の配列同士の相関係数は0に近い筈ですが、たったひとつの外れ値を追加することで全体の相関関係が強いものに変化してしまう場合がある。0.68380298]相関係数-0.06960120492893662ランダム同士は相関係数が0に近い。aとbの相関関係はほとんどない。外れ値を追加2つの配列に外れ値を一つずつ追加する。このたったひとつの値が全体の相関関係を狂わせる。]]グラフの左下に散らかる点のグラフに、右上(10,10)に一つの点が追加された。これにより、1に近い相関係数が出た。外れ値をたった一つ追加しただけで、相関関係が「ない」⇒「強い正の相関関係」と、評価が真逆に変わってしまった。元は相関関係がないので無視してよい特徴量だったのを、外れ値のせいで強い相関関係があると見誤ってしまうと不要な計算をする羽目になるということか。毎回散布図で確認した方が良さそうです。データの前処理がいかに重要かですね。したらその外れ値はブラックスワンかも...群雄割拠の中に現れた一筋の光かも...関連リンク(追記)qiita.comこちらで、相関係数が0.63になるデータを出力する関数を作って実験しておられます。そこから、データを1つ削除すると相関係数が0.84になる関数も。データがたった1つ減った(または加えられた)だけで相関係数が大きく変化してしまうと、係数や分析の信頼ってどうなのよ?と考えさせられます。統計学をやっとかないといかんですね。リアルな現場で使えない。