CV・NLPハマりどころメモ

画像認識と自然言語処理を研究する上でうまくいかなかったことと,その対策をまとめる自分用のメモが中心.

新しい環境にPython環境を準備[python]

Ubuntu16.04だと,2系と3系のpythonが混在しているため,pyenvで環境を作る.

必要なパッケージのインストール

sudo apt install -y git openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev

pyenvのインストール

git clone https://github.com/yyuu/pyenv.git ~/.pyenv

.bash_profileに追記

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
source ~/.bash_profile

Pythonバージョンの確認

pyenv install --list

インストール

pyenv install 3.7.3

バージョンを表示

pyenv versions

バージョンを変更

pyenv global 3.7.3

バージョン確認

python --version

追加ディスクのmount手順[Ubuntu]

sudo fdisk -l でディスクが認識されているかと,パス(/dev/xvdfなど)を確認

sudo vim /etc/fstabでディスクのパスとマウントポイントを指定.

/etc/fstab

/dev/xvdf       /home/ubuntu/storage    ext4    defaults,discard        0 0

sudo mount -aでfstabの変更内容をすぐに反映

元素記号をハードコーディングするときのリスト[Python]

手打ちで作って大変だったため記録.

atomic_symbol = ["H", "He",\
                 "Li", "Be", "B", "C", "N", "O", "F", "Ne",\
                 "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar",\
                 "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr",\
                 "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe",\
                 "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", "Ir", "Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn",\
                 "Fr", "Ra", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr", "Rf", "Db", "Sg", "Bh", "Hs", "Mt", "Ds", "Rg", "Cn", "Nh", "Fl", "Mc", "Lv", "Ts", "Og"]

他クラス分類のマクロ平均とマイクロ平均の違い[ML]

大げさな名前がついているが,実際は単純.

マクロ平均(macro average)

全クラスの結果のF1値を計算したもの.

マイクロ平均(micro average)

クラスごとにF1値を計算し,それらを単純に平均したもの.

Seaboarnでheatmapを表示させた時の数字を1.5e+02→150に変更[Python]

修正前

import matplotlib.pyplot as plt
import seaborn as sns

confusion = calc_confusion(all_prediction["A"], all_prediction["B"])
df = pd.DataFrame(data=confusion, index=['0', '1', '2', '3'], columns=['0', '1', '2', '3'])
    
plt.figure()
    
sns.heatmap(confusion, annot=True)
    
plt.xlabel('A')
plt.ylabel('B')

f:id:Vastee:20191004174059p:plain

修正後

sns.heatmapの引数にfmt='d'を与えた.

import matplotlib.pyplot as plt
import seaborn as sns

confusion = calc_confusion(all_prediction["A"], all_prediction["B"])
df = pd.DataFrame(data=confusion, index=['0', '1', '2', '3'], columns=['0', '1', '2', '3'])
    
plt.figure()
    
sns.heatmap(confusion, annot=True, fmt='d')
    
plt.xlabel('A')
plt.ylabel('B')

f:id:Vastee:20191004174207p:plain