ほぼ週刊ハマりどころメモ

筆者が画像認識(CV)と自然言語処理(NLP)を研究する中でハマった点を共有することで、世の研究者から余計な時間が奪われることを防げたらいいなぁ...

Python

フォーマット済み文字列リテラルの便利な使い方[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]: import 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", …

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

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

ワールドカードでタグ検索

# 必要なモジュールのインポート import BeautifulSoup import re try: # Python 3 from urllib import request except ImportError: # Python 2 import urllib2 as request # urlはスクレイピング対象 ex) url = http://www.hoge.co.jp/content response = …

フォルダ内のファイルを特定の割合に分ける[Python]

なんでこんなことするの? CNNで学習するために、画像ファイルをTrainingとValidationに分けたかったから。 画像ファイルを7:3に分けるスクリプト from glob import glob from os.path import join import random img_src = "/home/img/" # 指定パスのPNG画…

PILで透過PNGのαチャンネルを消す方法[Python][PIL]

なんでこんなことするの? Pytorchで透過PNGをテンソルに変換したらエラーがでたから。 やり方 In[1]: from PIL import Image In[2]: img_pil = Image.open("hoge.png") In[3]: img_pil.mode Out[3]: 'RGBA' In[4]: img_pil = img_pil.convert("RGB") # αチ…

find_allの後にfind_allしたいとき[Python] [Beautiful soup]

Beautiful soupでパースしたオブジェクトにfind_allの後にfind_allをするとエラーが出る. # エラーがでる例 soup = BeautifulSoup(html, "html.parser") obj = soup.find_all("td") obj = obj.find_all("a") 回避策:forで抽出したオブジェクトに対し,find…

Graphvizで描いたノードに画像を貼り付ける(Pythonで)

ノードの引数に貼り付けたい画像のバスを書くだけ。 from graphviz import Digraph # Ready to parent graph. g = Digraph(comment = 'Graph') g.node('A', 'King Arthur', image="king.png") g.node('B', 'Sir Bedevere the Wise') g.node('L', 'Sir Lancel…

Jupyter Notebook の初回起動時のワーキングディレクトリを変更

# configファイルの作成 $ jupyter notebook --generate-config # geditでconfigファイルを開き、c.NotebookApp.notebook_dirの変数に好きな場所に書き換える $ gedit ~/.jupyter/jupyter_notebook_config.py jupyter_notebook_config.pyの中身 ~~~~~~~~~~~ …

Python 正規表現 $で囲われた文字を置換

やりたいこと: $\beta$($circ$C) を (C) にしたい 正規表現: \$.+?\$ 詳細: \$: $をエスケープ +: 1回以上の繰り返し ?: 0回または1回の出現 In[1]: import re In[2]: re.sub(r"\$.+?\$","", r"$\beta$($circ$C)") Out[3]: '(C)'

リストの要素の検索-ある要素が初めて現れるのは何番目か?

num_list = [0,0,1,0,0,0] num_list.index(1) >> 2 num_list.index(0) >> 0 num_list.index(2)>> Traceback (most recent call last): >> File "<ipython-input-8-4fca9221ee97>", line 1, in <module> >> tmp.index(2) >> ValueError: 2 is not in list</module></ipython-input-8-4fca9221ee97>