IT教育訓練パパの研究日誌

育児や、データサイエンス系のノウハウや記事、学生へのかかわりで得たこと等、感動したことを書いていきたいです。よろしくお願いいたします。

平均情報量の平均って書いてあるけど、式を見ると期待値じゃない。。違いは?

この記事を読むとわかること

基本情報技術者試験の基礎理論の情報量で、

平均情報量がでてくるけど式を見ると期待値だった。

なぜ平均と呼ぶのか(呼んでいいのか)、自分なりの解釈をまとめた。

平均情報量

 \displaystyle
平均情報量H = \sum_{k=1}^n {P(J_k) \times I(J_k)} \tag{1}

 P(J_k) は事象 (J_k) の生起確率
 I(J_k) は事象 (J_k) の情報量

 (1) 式をみると、各事象の生起確率に情報量を乗算しているので、
期待値ではないかと疑問がでる。
平均値は、実は、ある状況下では、期待値に等しくなる。

期待値と平均値は?

ある標本サイズ Nの観測データ x_1, x_2, x_3,..... x_Nにおいて、
期待値と平均がどのように定義されるか見ていくと
母集団より、 X=x_i という値が観測される確率を p_iとする。
また、 N 回の観測において  X=X_i が観測される回数を N_iと置き、 期待値 m と平均 \bar{x} とする。

 \displaystyle
m = \sum_{i=1} {x_i p_i}\tag{2}

 \displaystyle
\bar{x} = \sum_{i=1} {\frac{x_i N_i}{N}}\tag{3}

ここで、大数の法則から標本サイズ N \inftyまで大きくなる時、

 p_i = \frac{N_i}{N}となる。つまり、標本数が \inftyの時、  m \bar{x}が等しくなる。

結論

算術平均も期待値も、大数の法則にのっとって、式を変形すれば、等しい。

そのため各事象の情報量の期待値を求めている平均情報量 Hは、

平均っていう言葉を使っても何ら不思議ではない。

AWSで”Failed to execute operation: The name org.freedesktop.PolicyKit1 was not provided by” が出た時の対処法

 このページを見てわかること

AWSで、”Failed to execute operation: The name org.freedesktop.PolicyKit1 was not provided by any ~~” といったエラーが出た時に試すべきことがわかる

 直面した問題

sshを使いたかったので、下記コマンドを打って、サービスを有効にしようと思ったらエラーが出た

systemctl enable sshd.service


エラー

Failed to execute operation: The name org.freedesktop.PolicyKit1 was not provided by any .service files


対処法としては、 sudoつけると実行できました。 コマンドの実行権限がないから起きるエラーだそうです。

prograshi.com

ちょっとしたことで時間とられちゃうな( ゚Д゚)

Javaのバージョンを切り替える方法

このページを見てわかること

AmazonLinux2で利用するバージョンの切り替え方がわかる

経緯

古いjavaを使わなければならなかったが、 AWSには既にjavaが入っていたので、切り替える必要があった

方法

下記コマンドを打つと切り替えられる

# alternatives --config java


下記のようにjavaを選べと出てくるので、選択する(+がついているのが現在利用されているもの)

  Selection    Command
-----------------------------------------------
*  1           /usr/lib/jvm/java-17-amazon-corretto.x86_64/bin/java
 + 2           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.amzn2.0.1.x86_64/jre/bin/java)

Enter to keep the current selection[+], or type selection number: 

環境設定って時間ばっかりかかって面倒

AmazonLinuxのディストリビューション確認手順

本ページでわかること

AmazonLinuxのOSのバージョン確認方法がわかる。

経緯

AWSを利用していて、MariaDBを導入しようと思ったら、 OSの種類が分からなかったため

方法

[ec2-user@ip-172-31-31-145 ~]$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"

これでID_LIKE="centos rhel fedora"なのでcentOS系なのかなとわかる また、下記記事によるとCentOS7のパッケージを利用すればよいらしい。

www.acrovision.jp

フォーラムを読まなくても情報があるって素敵

cron使うときは、絶対パスだと心得よ

このページに書いてあること

cronを使って、1分おきにカメラで撮影したいと思ったのですが、 思ったより、はまったので、メモをしておきます。 できているつもりでしたが、相対パスを記載していたため、バグに気づきませんでした。


cronの設定

下記コマンドで、出力されるファイルを変更する

crontab -e


変更例①

//アスタリスク(*)の意味は左から順に
//分 時 日 月 曜日 コマンド らしい。
//1時間ごとに、0分の時にカメラでキャプチャするなら下記のように
0 */1 * * *   sh /home/pi/Work/capturetest.sh
cronのストップ、再起動、確認

cronの設定を上書きするため、一度、ストップし、再起動して、cronが動いているか確認する そのためのコマンドは下記
◆ストップ

sudo systemctl stop cron


◆再起動

sudo systemctl restart cron


◆動いているか確認

sudo systemctl status cron


下記のようにrunnningと出てれば動いている

cron.service - Regular background program processing daemon
   Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: ena
   Active: active (running) since Fri 2022-10-28 14:48:52 JST; 7min ago
     Docs: man:cron(8)
 Main PID: 6674 (cron)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/cron.service
           mq6674 /usr/sbin/cron -f -L 15
はまったこと

上記の変更例①でcapturetest.shの中身を見ると

/usr/bin/python3 /home/pi/Work/captureTest.py

上記のようにpython3コマンドの絶対パスを記載すること さらに、.pyの中身でパス指定している場合は、絶対パスにしておくこと。 私の場合は、”./”以下に保存するようにpythonで記載していたため、 cronが動いていても、ルート直下に画像が保存されていた。

はまらないで、開発スピードを上げたい。。。。今日この頃

Anacondaとpycharmで、良く使うコマンドメモ

このページに書いてあること

私は、Anacondaでpythonを用いた開発をするのですが よく使うコマンドを忘れるのでメモします。 また、pycharmでAnacondaの環境を読む方法をメモします。

仮想環境の切り替え


conda activate 環境名


ちなみに、環境名の確認は

conda info -e


環境にインストールしたパッケージの確認方法

仮想環境に切り替えた後、下記コマンドを打つ

conda list

pipで導入した場合は、pipで確認する

仮想環境の構築
conda create -n 環境名


上記だと、pythonのバージョン等は、最新版が導入されてしまう。 バージョン指定などしたい場合は、下記のようにする

conda create -n 環境名 python=x.x numpy=1.xx.x


pycharmでAnacondaの環境を読み込む方法

pycharm設定1
pycharmのPython Inteepreterをクリックし、Add Interpreterをクリック
Virtualenv Environmentを選び、Exisitingを選択し、右の・・・ボタンを押下
仮想環境のpythonが存在するところを指定。大体はanaconda配下のenv下(今回はtensorflow2_2)のbinの中
terminalを開いて、仮想環境が読み込まれているか確認

基本情報技術者試験解説(2015年春 クイックソートを応用したアルゴリズム)

本記事を読んで得られること

2015年春の問題解説

スライドを作成しました。 よろしければご参照ください。 基本情報技術者試験受験者の皆様のお役に立てれば幸いです。