しゃべる英語めも
日常会話
- 平凡な mediocrity
- がんばる
- 努力する strive
- もがき苦しみながらがんばる struggle
- しようとしている I'd try to ~
- XX時ならいいよ Any time after/before XX is fine.
- こっそり見る sneak a peek
- 頼みを受ける/断る accept/refuse
自己紹介
- はじめまして(ビジネス) Pleased to meet you
- {NAME}って呼んでね you can call me {NAME}
- 20代後半です I'm late twenties.
- 以前は〜に勤めていました。 I worked for ... .
- 〜については結構経験があります。 I have a lot of experience in ...
- 専門は〜です。 My specialty is ...
仕事便利フェーズ
- 〜について話しますね Let's me explain about... .
- 無料 for free / free of charge
- 〜をお願いする I ask - to ~
食べ物
- もやし bean sprout
- なす egg plant
モデルを学習させるときのスクリプトテンプレート in Python
- 標準出力とファイルのログを書き出す
- 好きなコア数で並列処理する
- デバッグ中はデータ数少なくしたい
みたいなときこんな感じでかいたの使ってる
import time import argparse import logging import multiprocessing from pathlib import Path logger = logging.getLogger(__name__) fmt = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s') stream_handler = logging.StreamHandler() stream_handler.setLevel(logging.DEBUG) stream_handler.setFormatter(fmt) logger.setLevel(logging.DEBUG) logger.addHandler(stream_handler) logger.propagate = False def main(args): logger.debug('log test') pass if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--limit', default=None, type=int, help='Max data size') parser.add_argument('--log', default=None, type=str, help='Path to log file.') parser.add_argument('--cpu', default=multiprocessing.cpu_count(), type=int) args = parser.parse_args() if args.log is not None: path = Path(args.log) path.parent.mkdir(parents=True, exist_ok=True) handler = logging.FileHandler(path, 'w') handler.setLevel(logging.DEBUG) logger.addHandler(handler) start = time.time() main(args) t = time.time() - start logger.info(f'Time: {t / 60:,.0f} min {t % 60:,.0f} sec')
ひらがな <-> カタカナ in pandas
import pandas as pd def katakana_to_hiragana(text): d = {i: i - 0x60 for i in range(ord('ァ'), ord('ァ') + 86)} return text.str.translate(d) def hiragana_to_katakana(text): d = {i - 0x60: i for i in range(ord('ァ'), ord('ァ') + 86)} return text.str.translate(d) s = pd.Series(['あいう', 'アイウ', 'あqwせdrftgyふじこlp;']) katakana_to_hiragana(s) # 0 あいう # 1 あいう # 2 あqwせdrftgyふじこlp; hiragana_to_katakana(s) # 0 アイウ # 1 アイウ # 2 アqwセdrftgyフジコlp;
DaskでDataFrameをpartitionに分けて並列処理
Install
$ pip install "dask[complete]"
各partitionごとに何かを計算してmergeするイメージ
import pandas as pd import pandas as pd from dask import dataframe as dd def func(series): return pd.DataFrame({ 'min': [series.min()], 'median': [series.median()], 'sum': [series.sum()]}) # 分割処理したいオブジェクト s = pd.Series(list(range(100))) # Daskに変換(npartitions:分割数) ds = dd.from_pandas(s, npartitions=4) # 帰ってくるデータの型を定義して meta = pd.DataFrame({ 'min': [0], 'sum': [0], 'median': [0]}) # 計算の設定 res = ds.map_partitions(func, meta=meta) # 計算の実行 d = res.compute(scheduler='processes') print(d) # median min sum # 0 12.0 0 300 # 0 37.0 25 925 # 0 62.0 50 1550 # 0 87.0 75 2175
gcloudコマンドメモ
インスタンスのスペック変更
gcloud compute instances set-machine-type {VM_NAME} --custom-memory {MEMORY_GB} --custom-cpu {CPU_NUM}
dockerメモ
コンテナ起動
$ docker run -d -it ubuntu:16.04 bash
※ ubuntu:16.04はdockerイメージ名
コンテナのターミナルに接続
$ docker exec -it ${CONTAINER_ID} bash
コンテナの状態をコミット
$ docker commit ${CONTAINER_ID}
タグ付け
$ docker tag ${commit番号} ${REPOSITORY}:${TAG} #例 test:latest
イメージの削除
$ docker rmi ${REPOSITORY}:${TAG}
docker imagesで確認できる
Docker Imageを保存/読み込み
保存
$ docker save -o ファイル名 ${REPOSITORY}:${TAG}
読み込み
$ docker load < ファイル名
誕生日から年齢を出す
import datetime now = datetime.datetime.now() df.loc[:, 'birthday_dt'] = pd.to_datetime (df['birthday']) df.loc[:, 'age'] = (now - df['birthday_dt']).astype('<m8[Y]')