決定係数(R2値)について
普通の解析でもよく使うので情報のまとめ。
ソースはwikipedia
決定係数の定義は複数あるが、一般的なものは、以下らしい。
式変形して、標本値の標準偏差で表現すると、
ここで、非常にざっくりと実測値と回帰式の予測値との差yi-fiを平均的にΔとして、Δについての式を解くと
すなわち概念としては、予測精度が全くない状態(R2=0)は実測値と予測値との差異は標準偏差程度であるのに対して(何もしない、平均値をとるだけの予測)、そこからの差分をどれだけ回帰式で埋めれるのかの割合(と理解しました)。
そこで、およそ標準偏差の値から予測値の差を見積もろうと、上式をもとにしたR2値に応じた計算値は表の通り。
0.1 | 0.9 | 0.949 |
0.5 | 0.5 | 0.707 |
0.9 | 0.1 | 0.316 |
0.95 | 0.05 | 0.224 |
0.99 | 0.01 | 0.100 |
0.995 | 0.005 | 0.0707 |
0.999 | 0.001 | 0.0316 |
pythonでエクセルシートのデータ(CSVデータ)を画像化
pythonでエクセルシートのデータ(CSVデータ)を画像化します。
インプットのデータでは各セルに数値(実数値)が入っており、各セルを一つのピクセルとして数値は輝度値に変換します。
import numpy as np import csv # 画像の読み込み with open('xxx.csv') as f: reader = csv.reader(f) l = [row for row in reader] # ヘッダ部分を削除 l_img = [] for l in l[22:]: # 欠損値はnanで処理 l_img.append( np.array( [ np.nan if x == '' else float(x) for x in l ] ) )
読み込んだ各行の列数が一致していることを一応確認します。
img_len = np.array( [ len(x) for x in l_img ] ) print( np.max( img_len ) ) print( np.min( img_len ) )
画像のため、配列を二次元に変換しています。行列のサイズも確認しておきます。
im = np.array( l_img ).flatten().reshape( len(l_img),-1 ) print( np.shape( im ) )
imの配列中の値の分布などを確認します。
import seaborn as sns import matplotlib.pyplot as plt mask = ~np.isnan(im) sns.distplot(im[mask]) print( np.max( im[mask] ) ) print( np.min( im[mask] ) )
uint16の整数に変換します。今回は、元のデータが-6-+6だったので、その値が0-65,535になるよう調整します。
# uint16, 0-65,535 im_conv = np.uint16( 255*255*(im/12.+0.5) ) sns.distplot( im_conv[mask] ) print( np.max( im_conv[mask] ) ) print( np.min( im_conv[mask] ) )
バイナリとして保存します。リトルエンディアン(<)でunsigned shortです(H)。保存したrawファイルは別のプログラムとかで使用するつもり(Image-Jとか)。
im_conv.astype('<H').tofile('output.raw')
numpy配列をPillowを使って処理します。可視化まで実施です。
from PIL import Image pilOUT = Image.fromarray(im_conv) pilOUT.show()
参考にしました
PythonでCSVファイルを読み込み・書き込み(入力・出力) | note.nkmk.me
Pythonの画像処理ライブラリPillow(PIL)の使い方 | note.nkmk.me
NumPyのarrayとPILの変換 - white wheelsのメモ
mdwiki【インストール】
mdwikiの初期環境設定に取り組みます。
インストール
最新版のフォルダは下記から参照可能。現時点では0.6.2が最新のようです。
zipファイルをダウンロード、解凍します。フォルダ中にはmdwiki.htmlが格納されています。
初期設定・チュートリアル
インストールフォルダ、mdwiki.htmlが存在する階層に、index.mdを配置します。配置したindex.mdは一旦適当なものでok。
# test ## foo
mdwiki.htmlを適当なブラウザで開きます。
chromeで開くときの注意点
ローカルファイルにアクセスする際には、オプションの設定が必要です。chromeのショートカットのプロパティから、リンク先を以下の通り修正します。
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files
--をコピペするときに、勝手に連結される場合があるので注意。chromeのショートカットを管理者権限で開きます。通常通りブラウザが開かれますが、次回以降もオプション付きで開かれるようになります。先のmdwiki.htmlをchromeから開きます。
上記のテストページはこんな感じ。
参考にしました。
Markdown を HTML ファイル一つで Wiki っぽく見せる MDWiki が便利な件 - Qiita
MDWikiの気に入った点と課題に感じた点について - Qiita
MDWiki をローカルや共有フォルダ上で運用する際に気を付けること - stamemo
MarkDownで書いたファイルを置くだけでWiki化できるMDWikiを導入してみた。 - Qiita
【MDWiki】2つのファイルの置くだけ!Markdown記法で書けるMDwikiの導入方法について | CGメソッド
Windows版chromeでローカルファイルに直接アクセスする方法[オレ得JavaScriptメモ] | 56DOC BLOG
pythonで外部ファイルのクラス読み込み
実行位置から相対パスで外部ファイルを指定します。
import sys sys.path.append(r'..\dir') from aaa import bbb
windows環境なので、ファイル名の指定法に注意。
参考にしました。
Python 3でのファイルのimportのしかたまとめ - Qiita
windows環境(python)からwsl上のプログラムを実行
matplotlibでよく検索する内容
matplotlibでよく検索する情報のまとめ。逐次更新。
フォント
https://hogeocraft.blogspot.com/2017/09/matplotlibpyplot.html
軸の文字
上付き・下付きにはmathdefaultを使うとよい(数式フォントを使う)。
[$\mathdefault{cm^3}$/g]
グラフ
Matplotlib アスペクト比の調整 - 俺のOneNote
凡例の位置
matplotlib の legend(凡例) の 位置を調整する - Qiita
軸
[Python3] matplotlibで折れ線グラフで縦軸(y軸)を3つ以上書く方法 - Qiita
matplotlibで、2軸、3軸でグラフを描画する - Qiita
線形回帰
scikit-learn で線形回帰 (単回帰分析・重回帰分析) – Python でデータサイエンス
Python(StatsModels) で重回帰分析を理解し、分析の精度を上げる方法 | たぬハック
LASSO 回帰 / Python | scikit-learn の linear_model クラスを使った LASSO 回帰
カラーユニバーサルデザイン
https://www.fukushihoken.metro.tokyo.lg.jp/kiban/machizukuri/kanren/color.files/colorudguideline.pdf
資料を作成時に色使い困ったときによく参照にしています。詳細はHPを参照してください。色コードは下にべた書き。
#ff2800, #faf500, #35a16b, #0041ff, #66ccff, #ff99a0, #ff9900, #9a0079, #663300
#ffd1d1, #ffff99, #cbf266, #b4ebfa, #edc58f, #87e7b0, #c7b2de
pythonでリストコピペする用
'#ff2800', '#faf500', '#35a16b', '#0041ff', '#66ccff', '#ff99a0', '#ff9900', '#9a0079', '#663300'
'#ffd1d1', '#ffff99', '#cbf266', '#b4ebfa', '#edc58f', '#87e7b0', '#c7b2de'