pythonで正規分布(ヒストグラム)を書いて確率分布曲線を描くまで
環境
pythonを使うと言ってもそのままVScodeやATOMを使ってやるのではなくjupyter notebookを使用する。まだインストールしてない方はインストールしておくと今後データ分析とかで重宝すると思う。
色々一括でダウンロードできるAnoconda
とか入れるといいかも
- macbook pro 2017
- jupyter notebook
- データは.txtファイルから読み込む
環境を入れたのが結構前なので覚えていないのが申し訳ない。
各自で調べ欲しい。
ただjupyter notebook
さえ入っていればよかった気がするけど忘れた。
jupyter notebookでpython3ファイルを作る
右上のnew
のタブからpython3
を選択して新しくファイルを作ろう
作ったらこんな感じの画面が出てくるのでUntitled
の部分をクリックして名前を変えよう
少しだけjupyterのことを書いたがここでは詳しくは説明しない
ソースコード
では早速コードを書いていく 最初に色々importする
import numpy as np #テキストデータの読み込みで使う import matplotlib.pyplot as plt #ヒストグラムの描画で使う from scipy.stats import norm #標準偏差と平均値の導出で使う from termcolor import cprint,colored #文字に色を付けたりするときに使う
次にテキストデータを読み込む。
data0 = np.loadtxt("sample.txt", comments='!') #comments='!' ⬅️行ごとに読み込んでいる distance0=data0
実際のテキストデータの中身は以下の通り。
[1.00294 1.00302 1.00306 1.00297 1.00294 1.00318 1.00306 1.00288 1.00317 1.00299 1.00315 1.00292 1.00309 1.00296 1.00287 1.00294 1.00297 1.00286 1.00286 1.00297 1.00302 1.00281 1.003 1.00277 1.00311 1.00289 1.00282 1.00273 1.00296 1.00292 1.00286 1.00307 1.00296 1.00285 1.00297 1.00291 1.00299 1.00289 1.00283 1.00275 1.00287 1.00298 1.00292 1.00291 1.00296 1.00288 1.00292 1.00288 1.00296 1.00295 1.00296 1.00298 1.00297 1.00295 1.00306 1.00301 1.00311 1.00288 1.003 1.00289 1.00302 1.00295 1.00314 1.00306 1.00317 1.00306 1.00316 1.00315 1.00308 1.00304 1.00313 1.00309 1.00307 1.00302 1.00304 1.00295 1.00315 1.00317 1.00305 1.00306 1.00326 1.00299 1.00305 1.00305 1.0031 1.00298 1.00309 1.00303 1.00303 1.00297 1.00297 1.00326 1.00299 1.00321 1.003 1.00302 1.00296 1.0031 1.00312 1.00296 1.00297 1.0029 1.003 1.0031 1.003 1.00292 1.00305 1.0029 1.00297 1.00312 1.00307 1.0032 1.00306 1.00312 1.00291 1.00301 1.00308 1.00319 1.00292 1.00305 1.00282 1.00309 1.00302 1.00301 1.00308 1.00312 1.00298 1.00314 1.003 1.00301 1.00298 1.0031 1.00314 1.003 1.00303 1.00315 1.00305 1.00326 1.00308 1.00318 1.00304 1.00304 1.00315 1.00309 1.00315 1.00316 1.00323 1.00304 1.00292 1.00314 1.00309 1.00317 1.00301 1.00326 1.00311 1.00308 1.00316 1.0031 1.0032 1.00291 1.0028 1.00299 1.00288 1.00291 1.00294 1.00299 1.00285 1.00286 1.00298 1.00293 1.00276 1.00287 1.00288 1.0029 1.00292 1.00292 1.00307 1.00291 1.00308 1.00294 1.00284 1.00304 1.00292 1.00291 1.00295 1.00292 1.00304 1.00288 1.0028 1.00269 1.00291 1.00283 1.00287 1.00289 1.00303 1.00283 1.00308 1.00294 1.00309 1.00318]
実際にテキストデータは1行ずつなのでこんな感じです。
次に標準偏差と平均値を表示する。 確率分布曲線を描く際に必要なので定義しておく
param = norm.fit(distance0) #平均値/標準偏差で配列として定義 #loc, std = stats.norm.fit(distance0) cprint('平均値/標準偏差',attrs=['bold']) #cprintを使って文字を強調させている print(param)
最後に実際にヒストグラム と確率分布曲線を描きましょう。
plt.figure plt.xlabel("distance(m)",fontsize=15) #x軸のラベルを変更 plt.ylabel("frequency",fontsize=15) #y軸のラベルを変更 weights0 = np.ones_like(distance0)/float(len(distance0)) #重みつけをするので加重平均を出す plt.hist(distance0,weights=weights0,bins=55,alpha=0.6,color="blue") #weight=重み bins=ビンの数(縦棒の数), alpha=グラフの透明度, color=グラフの色, pdf_fitted = norm.pdf(x,loc=param[0],scale=param[1]) #確率分布曲線(フィッティング)を描く,loc=平均値,scale=正規分布 pdf = norm.pdf(x) plt.figure plt.plot(x,pdf_fitted/50000,'r-') #50000の部分はヒストグラムに合わせて調整する plt.tight_layout() plt.savefig("sample1.png",dpi=1000) #描いたグラフを保存する。dpiが大きいほど高画質になる。1000で十分に高画質 plt.show()
先ほどのテキストデータを使うと以下のようなグラフが書けるはず。 以上
あとがき
説明が曖昧な部分があったりとまだまだ勉強不足で申しわけけない
ubuntuMATEにmacbookでSSH接続する(raspberrypi)
前段階
raspberrypi3にubuntuMATEが入ってることを前提に書いてます
備忘録みたいな感じなのでより詳しく知りたい方は参考ページをみてください
※ user@hostname
で書いてます
raapberrypiに色々入れる
最初にssh-serverを入れます。
sudo apt-get update sudo apt-get upgrade sudo apt-get install openssh-server
次にavahi-daemonを入れます
sudo apt-get install avahi-daemon
これでmacbookでssh接続する時に user@hostname
で接続できる
※ またデフォルトのhostnameを変えたい場合は
sudo vi /etc/hostname
ここを編集すれば変えれます なんかport22を解放しなくちゃいけないらしいので 以下のコマンドを実行する
sudo ufw allow 22 sudo /etc/init.d/ssh restart sudo systemctl enable ssh #raspberrypiの起動時にsshを起動
最後にavahi-daemon を再起動する
sudo /etc/init.d/avahi-daemon restart
これでsshできるはず
macbookとssh接続
ssh hostname.local -l user
これで繋がるはず╭(・ㅂ・)و 参考ページ
Rapberrypi3にUbuntuMATE+ROSを入れるまで
前回の記事でROSの勉強のためにUbnutuMATEのインストール方法を書いたのだが ROS kinetic kame を入れる予定だったのにUbuntu18.04を入れてしまったので入れなおすことにした。
環境
以前の記事と同じですが一応書いておきます。 - Raspberrypi3 - MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports) - macOS mojave
UbuntuMATE+ROSをダウンロード
UbuntuMATEを入れてからROSを入れるやり方が一般的だと思うのだが めんどくさいので1つになってるパッケージを入れようと思う。 ただ容量が3GBもあるのでダウンロードに時間がかかる。 気長に待ちましょう╭(・ㅂ・)و
無線でやると4~5時間くらいで有線でやると20分くらい どのみちそこそこかかるので気長に待つ(鋼の意思)
何度かタイムアウトになりつつもダウンロードが終わりました。 最初にSDのdiskの番号を確認しましょう
$diskutil list diskutil list /dev/disk0 (internal): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme 500.3 GB disk0 1: EFI EFI 314.6 MB disk0s1 2: Apple_APFS Container disk1 500.0 GB disk0s2 /dev/disk1 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +500.0 GB disk1 Physical Store disk0s2 1: APFS Volume Macintosh HD 464.3 GB disk1s1 2: APFS Volume Preboot 46.4 MB disk1s2 3: APFS Volume Recovery 509.7 MB disk1s3 4: APFS Volume VM 1.1 GB disk1s4 /dev/disk2 (disk image): #: TYPE NAME SIZE IDENTIFIER 0: Apple_partition_scheme +11.0 MB disk2 1: Apple_partition_map 32.3 KB disk2s1 2: Apple_HFS ContentsBridgeInstaller 11.0 MB disk2s2 /dev/disk3 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *32.0 GB disk3 1: EFI EFI 209.7 MB disk3s1 2: Microsoft Basic Data RPI 31.7 `GB disk3s2
自分の場合は/dev/disk3
でした。
次はSDカードをフォーマットとアンマウントをしましょう
$ diskutil eraseDisk FAT32 RPI /dev/disk3 $ diskutil unmountDisk /dev/disk3
ここまで終わったらついにイメージに書き込みましょう
最初にダウンロードしたイメージを解凍しましょう
解凍方法はなんでも大丈夫です
そして解凍した.img
のディレクトリに移動します
自分はDownloads/
にあったのでそこに移動します
$ cd $ cd Downloads/
いよいよ書き込みです!disk番号を間違えないようにしましょう
$sudo dd bs=10m if='German-Robot.Com-Image-Pi3-ROS-Kinetic-Ubuntu-Mate.img' of=/dev/disk3
Ctrl+t
で現在の状況がわかるので動いてるか不安だったら確認してみましょう。
bs=10m
の部分を大きくすれば速くなるらしいが失敗する可能性が上がるらしい
ちなみにbs=1m
だと1時間くらいらしい
書き込みが終わったらSDカードを入れて起動してみる
なんかエラーとか出てるっぽいけど普通に起動した。
ちなみに最初のユーザーネームはpi
でパスワードはraspberry
です。
起動したら最初にキーボードレイアウトを変える。そのままだとドイツ語キーボードになっているっぽくてちゃんと入力できない。
ついでにraspi-config
でSSH(Interfacing)も有効にしておくと後々便利。
ここでパスワードも変えれるので替えたかったら変えるのもあり。
キーボードレイアウトを変えたらwifiも設定してとりあえずは準備完了。
以下のコマンドを入力する。そこそこ時間がかかるので気長に待つ
$ sudo apt-get update $ sudo apt-get upgrade
2時間くらいかかった
$roscore
これで起動すればOK
Raspberrypi3にUbuntu MATEをインストールして有線でsshするまで
micriSDの32GBをゲットしたのでROSの勉強をしたいと思いUbuntuMATEをインストールした。
環境
・Raspberrypi 3B
・Macbook Pro
macOS Mojave
UbuntuMATEのダウンロード
ubuntu-mate.org
ここでraspberrypi用のubuntuをダウンロードする
SDカードのフォーマットとイメージの書き込み
「SD Card Formatter」などを使う手もあったがコマンドラインで行なった
$diskutil list
これでSDカードのディスク番号を確認、自分の場合は/dev/disk3
だった
$diskutil unmountDisk /dev/disk3 #ディスクフォーマット $ sudo dd bs=1m if=ubuntu-mate-18.04.2-beta1-desktop-armhf+raspi-ext4.img of=/dev/rdisk3 #先にダウンロードしたubuntuを解凍しておく
これで10分くらい待てばSDに書き込まれる。
また,ctrl+tで途中経過がみれる。
書き込みが終わったらraspberrypiをHDMIケーブルでディスプレイで表示してみる。
うまくいけばこんな感じの画像が表示されるので画面に沿って設定すればとりあえずはUbuntuMATEが入ってる。
macbookとraspberrypiを有線を使いSSH接続する
最初に更新とアップデートしておく
$sudo apt update $sudo apt upgrade
sshで接続するためにパッケージを入れる
$sudo apt install openssh-server
sshを再起動して起動時に自動で起動するようにする
$sudo /etc/init.d/ssh restart $ sudo systemctl enable ssh
次にこのままだとmacbook側からアプローチできないのでその辺りを設定する。
$sudo ufw status $sudo ufw allow proto tcp from 192.168.100.0/24 to any port 22 $sudo ufw enable $sudo ufw status #多分inactiveのままに
次にホストキー周りについて設定する
$service ssh status #ホストキーが生成されずにエラーメッセージが何個かあることを確認する $sudo ssh-keygen -A #これでホストキーが生成されるはず $sudo /etc/init.d/ssh restart #ssh再起動
これで繋がるはずだけどavahi-daemonを入れると幸せになれるっぽいので入れて設定しておく
$sudo apt-get install avahi-daemon $sudo vim /etc/avahi/services/ssh.service $sudo service avahi-daemon restart $sudo service avahi-daemon status
そしてraspberrypiとmacbookをLANケーブルでつなぎ
ssh -o 'StrictHostKeyChecking no' username@hostname.local
これで繋がるはずです。
初めてのmarkdownと技術記事?だったので色々不手際がありましたがご容赦ください
以下が参考にさせていただいた記事、ページです