2021年2月5日金曜日

matplotlib日本語化対応

matplotlibで日本語データをグラフ表示すると文字化けしてしまいます。

そこで日本語化への対応方法を示します。




フォントファイルの取得
まず、フォントファイルを取得していきます。
今回は、記事作成時点で最新のIPAexフォント(Ver.004.01)のIPAexゴシックを利用してきます。
以下のリンクにアクセスしてフォントファイルIPAexゴシック(Ver.004.01)をダウンロードします。
https://moji.or.jp/ipafont/ipaex00401/


ダウンロードしたら展開します。



フォントファイルを配置
次にmatplotlibでこのフォントファイルを利用できるように、フォントファイルを配置していきます。

matplotlibの設定ファイルの場所は、以下のコードにて確認することができます。
import matplotlib as mpl
print(mpl.matplotlib_fname())
私の場合は、「/opt/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc」でした。

フォントファイルは、設定ファイルの1階層上のfontsフォルダ内のtff内に入れていきます。
私の場合は、「/opt/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf」にipaexg.tffを入れます。


キャッシュファイルの削除
使用しているフォントのキャッシュが残っている場合があります。
そこでキャッシュファイルを削除していきます。
windowsの場合は、「C:\Users\<ユーザ名>\.matplotlib」
Macの場合は、「/Users/<ユーザ名>/.matplotlib」にあるjsonファイルを削除します。

そして、一度現在使用しているVSCodeやJupterNotebookなどは落として再起動します。


matplotlibの設定
フォントファイルがフォルダに入り、キャッシュも削除されました。
このままではまだ日本語化されません。matplotlibを実行するときに、使用するフォントファイルを指定してあげる必要があります。
ソースコード内に
plt.rcParams['font.family'] = 'IPAexGothic'
を記載することで、IPAexゴシックを利用するようになります。

これにて終了です。


参考




2020年10月4日日曜日

確率分布適合度の検定(幾何分布:離散型)

 ヒストグラムをみたときに、これは**分布に似ていると思うときがあります。そのときの検定方法を載せておきます。観測された事象がある確率分布に従うということがわかれば、平均や標準偏差がわかれば、その事象を再現できることになります。シミュレーションも簡単にでき、物事の動きを判断するときに大変便利です。なぜか書籍などにはこのあたりを書いてあるものが僕は出会っていません。


(1) 訪問回数の度数分布を考える。

次のような月別のWiFiの利用回数の度数分布があります。これは、https://crawdad.org/kth/campus/20190701/eduroam/ のデータを計算したものです。

これのヒストグラムを書いてみると、次のようになります。

これをみたときに、仮に「幾何分布と似ていないか」と考えたとします。このヒストグラムが幾何分布に従っているかを検定します。


(2) 幾何分布を利用して度数分布を作成する


この確率を用いて度数分布表を作成します。ヒストグラムのデータから平均は8.403(日)とわかっています。幾何分布は平均は確率pの逆数なので、p = 1/8.403 = 0.119となります。ちなみに今回の標準偏差は7.15になります。

k回の度数を求めるには、発生総数(今回は31688)×p(1-p)^(k-1)で求めていきます。これで度数分布表を求めていくと、

階級値度数幾何分布幾何分布度数平均標準偏差
162400.11900511723771.0341548.4037.15
235790.10484289933322.261793確率
321360.092366057782926.8956390.1190051172
417020.081374024242578.58008
514450.071690098952271.715855
612450.063158610322001.370044
710980.05564241251763.196767
810770.049020680671553.367329
910520.043186968821368.508668
109610.038047498541205.649134
119340.033519651511062.170717
128760.02953064146935.7669665
138590.02601634401824.4059089
149080.02292026594726.2973871
158960.020192637639.8642814
168930.01778960987563.7171576
178800.01567255526496.6319312
188510.01380744099437.53019
198840.01216428485385.4618584
207900.01071667271339.5899248
217100.009441333817299.176986
226420.008317766779263.5733937
233560.007327909969232.2068111
242410.006455851184204.5730123
251760.005687571857180.227777
261280.005010721701158.7797493
27590.004414420178139.8841466
28370.003889081587123.2372173
29200.003426260977108.5713578
30130.00301851838895.65081068
合計316880.977653908430979.89705

のように計算できます。この幾何分布で算出した度数分布をグラフにしてみると、次のようになります。きれいすぎです。

(3) 適合度の検定

今回はカイ2乗検定をしていきます。帰無仮説H0は「得られたデータは理論上の確率分布(幾何分布)に従う(適合する)」、対立仮説HAは「得られたデータは理論上の確率分布(幾何分布)に従うと言えない」です。

Power_divergenceResult(statistic=6981.330926190308, pvalue=0.0)

となり、P値=0.0となり、同一分布とはみなせないという結論になりました。結論としては残念ですが、このようなやり方で離散型の確率分布との適合度を検証できます。連続型の確率分布の場合は、範囲で考えるため、もう少し面倒になります。



参考

https://drive.google.com/file/d/1lbivZ_PRGdx6liTdMI9bE-Ce1mH6IL8-/view?usp=sharing

https://www.trifields.jp/chi-square-test-test-of-goodness-of-fit-1054

https://toukei.link/programmingandsoftware/statistics_by_python/chisqtest_by_python/

http://www.a.math.ryukoku.ac.jp/~hig/course/stat_2018/w13.pdf




2020年6月19日金曜日

OS(Unix) 第7回 viエディタ

目的:Linuxでファイルを編集するときに利用するviコマンドは、Linuxを扱う上で欠かせないものです。
今回は、viコマンドの基本を理解するとともに、便利なコマンドも身に付け、自由にviを使いこなせるようにしてください。

[前回の復習]

[今回の内容]


[課題]
授業の中で指定された課題を、下記のリンクから提出しなさい。
締め切りは次回授業開始まで。

OS(Unix) 第6回 5章よく使うコマンド2

目的:今回はLInuxを利用する上でよく使うコマンドを学んでいきます。特にtail -fやdiffは使いこなせると色々な場面で活用できますので、身につけて下さい。
今回は、僕自身がLinuxと出会った体験談を話しているので、Linuxと自身との今後の関わりについて考えるきっかけとなって欲しいです。

[前回の復習]

[今回の内容]

僕とLinuxとの出会い

[課題]
授業の中で指定された課題を、下記のリンクから提出しなさい。
締め切りは次回授業開始まで。