CV・NLPハマりどころメモ

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

Python

新しい環境に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://g…

元素記号をハードコーディングするときのリスト[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", "A…

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.…

Collectionで作った辞書を棒グラフでプロット[python]

import collections import matplotlib.pyplot as plt l = ['a', 'b', 'b', 'b', 'c'] c = collections.Counter(l) plt.bar(list(c.keys()), list(c.values()))

pathlib, f-stringを使ってスマートにパスを生成[Python]

Python3.6から使えるようになったf-stringを使って,スマートにパスを生成しよう. かっこ悪いパスの生成 from datetime import datetime now = datetime.now().strftime("%Y%m%d%H%M%S") dst = "/root/output/" + now + "_result/hoge.txt" print(dst) >> /…

Spyderでタブ補完でインデントされるときの対処法[Spyder][Python]

Spyderを使っていて,TABキーを押したとき,補完ではなくインデントされる場合は, Preferences > Editor > Tab always indent のチェックを外す.

Pythonを3に切り替える[Ubuntu][Python]

$ sudo mv /usr/bin/python /usr/bin/python2 $ sudo ln -s /usr/bin/python3 /usr/bin/python $ python --version Python2とPython3が既にインストールされたUbuntu環境が対象. pythonコマンドに貼られていたリンクを一旦削除し,python3へリンクを貼りな…

importしたクラスがもつメソッド一覧を確認[Python]

>> import requests >> url = "https://hoge.com" >> r = requests.get(url) >> [print(x) for x in dir(r)] __attrs__ __bool__ __class__ __delattr__ __dict__ __dir__ __doc__ __enter__ __eq__ __exit__ __format__ __ge__ __getattribute__ __getstate…

フォーマット済み文字列リテラルの便利な使い方[Python]

Python3.6から追加されたフォーマット済み文字列リテラルを便利に使ってるなあと思った事例をいくつか紹介. 今後も見つけるたびに追加していこうと思う. Bashのように{hoge}で変数を使う Kaggleで見かけた使い方 あるフォルダのしたのファイルを読み込むと…

defに付いてる->ってどういう意味?[Python]

Kaggleのコードを読んでいると以下のような記法を見つけた. def greeting(name: str) -> str: return 'Hello ' + name ん? -> ってなんぞ? 調べてみると型に関する注釈をつける機能だということが分かった. 上の例だと,name: str で入力がstringである…

Proxy環境下でpip[Python]

pip install hoge --proxy http://your_proxy:8888

データをopenするときの第2引数 r+, w+, a+の違いって何?[Python]

導入 "r+" と "w+" と "a+" における挙動の違い "r+" の場合 "w+" の場合 "a+" の場合 発展的な内容 Openした際のポインタ位置の違い f.read() した際の違い f.read() を行うとポインタはデータの末尾を指す 導入 Pythonでテキストファイルを書き込むときに…

Pythonでテキストファイルを1行ずつ読み込む[Python]

with open("text.txt") as f: for line in f: print(line) withを使いたくなければ, f = open("text.txt") for line in f: print(line) f.close()

pd.read_csvでUnicodeDecodeErrorがでるときの対処法[Python][Pandas]

Windowsでpd.read_csvを使うと頻繁にエラーがでる. エラーがでにくいcsvの読み込み方を見つけたので,メモ. df = pd.read_csv("./hoge.csv", engine="python", index_col=0) engineでpythonを指定すると文字コードのエラーが発生しにくくなる. index_col…

置換する文字を複数指定[Python]

import re patterns = "dog|cat|fox" repl = "animal" sentence = "dog, cat, fox, pen." re.sub(patterns, repl, sentence) >> 'animal, animal, animal, pen.' replaceではなくre.subで置換するパターンを正規表現で指定するのだ。

f'{hoge}'はフォーマット文字列リテラル(f-strings)[Python]

Kaggleを眺めていると見慣れない記法を発見。 x = str(x) for punct in puncts: x = x.replace(punct, f' {punct} ') return x ん? f' {punct} ' ってなんぞ? 調べてみるとこれはf-strings(フォーマット文字列リテラル)でPython 3.6で追加された新機能だ…

MeCabで日本語の分かち書き[MeCab][Python]

import MeCab mecab = MeCab.Tagger ("-Owakati") print(mecab.parse("平成最後の初売りセールが開催中")) 平成 最後 の 初 売り セール が 開催 中 OR import MeCab mecab = MeCab.Tagger ("-Ochasen") print(mecab.parse("平成最後の初売りセールが開催中"…

Pythonでhtmlのファイルを読み込む方法[Python][Beautifulsoup]

from bs4 import BeautifulSoup import re links = [] html_path = "./hoge.html" with open(html_path) as f: html = f.read() soup = BeautifulSoup(html) parsed_links = soup.find_all("a") for link in parsed_links: TargetLink = link.get("href") if…

Pythonでテキストファイルから1行づつ読み込んで処理を行う[Python]

fname = "url.txt" with open(fname) as f: for line in f: contents = requests.get(line) time.sleep(1.5)

Pythonで範囲を指定して乱数を生成[Python][Numpy]

time.sleep(*) の変数をランダムに変えたかったときに使った方法を記す。 import numpy as np np.random.randint(10, 20) >> 14 ちなみに記法としては以下のような感じ randint(low, high=None, size=None, dtype='l') TODO: 範囲指定してランダムな小数を生…

gensimで英語の分かち書き[gensim][Python]

from gensim.utils import tokenize list(tokenize("i am happy")) >> ['i', 'am', 'happy']

複数のCSVを一つの表にまとめる[Python][Pandas]

hogeというフォルダの中に複数のCSVが配置されているとき、 以下のコードで複数のCSVを一つのDataFrame(表)としてまとめることが可能 from glob import glob import pandas as pd csv_files = glob("hoge/*.csv") df = pd.concat([pd.read_csv(i) for i in c…

shutil.copyfileでpermission deniedがでたときは引数を見直そう[Python][shutil]

Windowsでファイルをあるフォルダへコピーするコードを書いた際,以下のエラーがでた. import shutil path1 = r"C:\Users\hoge\Documents\hoge\hoge.pdf" path2 = r"C:\Users\hoge\Documents\hoge2" shutil.copyfile(path1, path2) >> PermissionError: [Er…

pythonでグラフデータベースを構築[Python][GraphDataBase][Neo4j]

本記事では、グラフデータベースNeo4jを用いて、簡単なグラフをpythonで記述する方法を紹介。 まずはNeo4jのインストールから済ませよう vastee.hatenablog.com Neo4jのインストールが終わったら、Neo4jのpythonラッパーneo4jrestclientをインストール pip i…

別々のフォルダに散らばって保存されたファイルを1つにまとめる[Python]

└─data ├─test │ ├─0 │ │ train_0000010.tif │ │ train_0000011.tif │ │ train_0000012.tif │ │ train_0000013.tif │ │ train_0000014.tif │ │ │ └─1 │ train_0000015.tif │ train_0000016.tif │ train_0000017.tif │ train_0000018.tif │ train_0000019.tif…

Kerasで花画像の名前を当てる~検出編~[Keras][CNN][深層学習][Python]

vastee.hatenablog.com の続き 今回は学習したモデルを使って花の名前を当てるプログラムを作成する. import numpy as np from keras.preprocessing.image import load_img, img_to_array from keras.applications.vgg16 import VGG16, preprocess_input fr…

自前で用意した花画像を使ってKerasでCNN~学習編~[Keras][CNN][深層学習][Python]

昨今様々な深層学習ライブラリが台頭してきたことにより,最新のソースコードも様々なライブラリを用いて書かれることが大きなって来た. この為,いつも使っているpytorch以外のライブラリも触れるようにしておかなければならないと感じるようになった. そ…

Pythonのsortで1の次に10がくる問題

下のリストがあったとき,sortを使って昇順に並び替えを行うと,困ったことが起きる. list1 = ["1","10","3","22","23","4","2","200"] list1.sort() list1 >> ['1', '10', '2', '200', '22', '23', '3', '4'] そう,1の次に2が来ず,10が来てしまうのだ.…

NLTKのコーパスを用いたStopWord除去(英語)[Python][NLP]

In [1]: from nltk.corpus import stopwords In [2]: stopWords = stopwords.words('english') In [3]: stopWords Out[3]: ['i', 'me', 'my', 'myself', 'we', 'our', (省略)] In[4]: len(stopWords) Out[4]: 179 In[5]: words = ["he", "gets", "an", "appl…

GrovePiをRaspi 3B+に取り付けて簡単にLチカを行う[Grove][Python][RaspberryPi]

Groveとは? 用意したもの GrovePi+シールドをRaspberry Piに取り付ける GrovePiのソースコードをダウンロード&インストール GrovePi+シールドにLEDモジュールを取り付ける GrovePiのサンプルプログラムを実行しLEDをチカチカさせる Groveとは? マイコンに…