2017-11-01から1ヶ月間の記事一覧
以下のようなコードでbounding boxを描画しようとするとエラーになった。 img = Image.open(img_path) draw = ImageDraw.Draw(img) draw.rectangle((bbox[0][0], bbox[0][1], bbox[2][0], bbox[2][1]), outline=(255, 0, 0), width=2) 原因はImage.openで読…
docker-compose.yamlではportsのところにポートマッピングを記載しているのに、 docker-compose upしてdocker psを実行しても以下のような感じでポートマッピングされてないように見える・・という場合。 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS N…
MySQL WorkbenchでExportしたデータをImportすると以下のエラーがでた。 20:44:03 Restoring C:\Dump20200701.sql Running: mysql.exe --defaults-file="c:\users\me\appdata\local\temp\tmppx6bb3.cnf" --protocol=tcp --host=localhost --user=usr--port=3…
現時点(2020/07/06)でiOS版ChromeではWebRTCが使えない。その理由を調べてみた。 以下によると、iOSアプリはレンダリングエンジンにWebkitを使わないといけないらしい。つまり、ChromeはWKWebViewの周りにボタン等を配置したガワネイティブアプリだったわ…
Jupyterで%%timeを使って処理時間を計測したところ wall timeが140sでcpu timeが2sぐらいだった。 原因は並列処理をしていたため。cpu timeはメインスレッドの処理時間のみ計測した結果っぽい。 並列処理をした場合の全スレッドのcpuを使った時間は出せない…
原因はtzdataのinstall時にtimezoneを選択するよう求められること。 Dockerfileに以下を追加すると選択しなくてよくなる。 ENV DEBIAN_FRONTEND=noninteractive 参考: qiita.com
色々原因はありうるが、自作モジュールでかつコマンドラインから実行している.pyファイルと別のフォルダにあるモジュールでこのエラーが出ている場合、 モジュール検索パスが通っていないことがある。 モジュール検索パスを追加したい場合はPYTHONPATHかsys.…
以下のようにregionコメントを入れるとPyCharmのエディタ上でコードを折りたためる。 #region ~をするコード ... #endregion ホントはコードが長くなってきたら別モジュールに分けた方が良いんだろうけど、この方法でもコードを見やすくできる。 参考: [htt…
docker daemonを再起動したら直った。謎なエラーだ。。 参考: qiita.com
原因は不明だが、以下で直った。 ※「The project at … uses a non-standard layout and cannot be attached to this project」というメッセージがダイアログに表示されたら、一度Yesを選択し、 その後attachするとAttachできる。それでもだめな場合はPyCharm…
原因はloggerの設定でfileHandlerを定義していたが、ログファイルの出力先フォルダが存在しないこと。 以下のように設定している場合、/home/ec2-user/m5/logフォルダがないとエラーになる。もっと原因がわかりやすいエラーメッセージにしてほしい。。 handl…
long formatとwide formatについては以下参照。 www.theanalysisfactor.com long formatのDataFrameに対して以下のように商品毎の日別売上合計を集計したところ、53秒かかった。 sums: DataFrame = train.groupby(["item_id", "date"])[SALES_COUNT].sum() …
以下のように、移動平均などを計算しようとしたらすごく時間がかかっていたので速くしようとした時の話。 agg = sales[SALES_COUNT].astype("float32").shift(shift).rolling(window) \ .agg(["mean", "max", "min", "std", lambda x: x.mode()[0]]) \ .rese…
状況は以下。 df = df.query("store_id == 'CA_1') # store_id はCA_1, CA_2などがある df.groupby('CA_1').sum() #=> dfにはCA_1しかないのにCA_2の集計結果の行もできてしまう 以下のようにobserved=Trueオプションを指定すると直る。この挙動をデフォルト…
直接変更する方法はなく、以下の手順が必要。 ・以下をEC2で実行する aws s3 --recursive mv s3://<bucketname>/<folder_name_from> s3://<bucket>/<folder_name_to> ・古い名前のフォルダを削除する もっと簡単にフォルダ名変えられるようにしてほしい。。 参考: stackoverflow.com</folder_name_to></bucket></folder_name_from></bucketname>
以下でsudoできるようになる。 usermod -G sudo <ユーザ名> 参考: webkaru.net
以下のようにget_level_valuesメソッドでindexのうち一つの列を選択してmaskをかけられる。 mask: Series = self.features.index.get_level_values(1) == pred_date self.features.loc[mask, SALES_COUNT] = pred[PRED_SALES_COUNT] multi indexはほんとは扱…
listの中の値をassertしたい場合でもassert ==で検査できる。配列やtupleが入れ子になっていても大丈夫。 assert actual == [1, 7, ["平均", "mean"]] 以下によるとunittestではTestCase.assertItemsEqualとか使わないといけないっぽい。pytestは楽だなあ。 …
例えば、以下のようにグループ毎に集計する処理の場合 sums: DataFrame = train.groupby(ids)[SALES_COUNT].sum() 以下のようにするとグループ単位で並列化できるので速くなりそうに思える。 def func(df): return df[SALES_COUNT].sum() ret_list: List = P…
docker composeファイルで以下のようにホスト側のフォルダをmountしている場合。 volumes: - "/var/log/app:/home/my-user/app/log" /home/my-user/app/log(コンテナ側のフォルダ)にwrite権限がないユーザでファイルを保存しようとすると、Permission Denied…
以下のようなコードで、あるDataFrameの4つの列に別のDataFrameの値を代入しようとしたが、できなかった(代入してもsalesの値がNaNのまま) sales.loc[mask, [SALES_COUNT_MA14, SALES_COUNT_MMAX14, SALES_COUNT_MMIN14, SALES_COUNT_MS14, SALES_COUNT_MM…
Windows10には初期化機能があり、簡単に初期化できる。詳細は以下参照。 www.comshop.co.jp こんなに簡単に初期化できるとは。。便利。 ただ、初期化だけだと初期化前にあったファイルを復元できてしまう可能性があるので、他の人にPCを譲る場合は初期化後に…
原因はGPUの無いマシンでdocker-compose.yamlに runtime:nvidia と書いた状態でコンテナを起動しようとしたことだった。 runtime:nvidia を削除すると直った。
localeとは言語、単位、時刻など国毎に異なる設定をまとめたもの。 C localeはデフォルトのlocale。基本アメリカに合わせた設定になるはず。 LANG, LC_TYPE, LC_ALLなどいくつかの環境変数を使って設定する。 en_US.UTF-8のように 言語_国.エンコーディング…
原因はmkdirの中でOSのデフォルトエンコーディングに従ってmkdirに渡したpath文字列をエンコードしているため。 CPython実装を見ると、Py_FileSystemDefaultEncodingに従ってエンコードしているように見える。 cpython: 54c93e0fe79b Modules/posixmodule.c …
cloudwatchのような監視ツールがあればメモリ使用量もグラフで出してくれるんだろうけど、 そこまでしなくていいやという場合。以下をコンソールで実行すると1秒に一度特定のプロセスのメモリ使用量などを取ってきて表示してくれる。 top -d 1 -b |grep <process> 参</process>…
コア数が20あるCPUでシングルプロセスで処理していたのをマルチプロセスにしたところ10倍速くなってビックリした。 やり方も簡単で、以下のようにgroup毎に集計する処理を並列化するだけでいい。これは便利。 def aggregate(sales: DataFrame, window: int):…
原因はOut of memoryだった。使うメモリ量を減らさないといけないんだけど、苦戦中。。 参考: stackoverflow.com
売上の移動平均・最大・最小・標準偏差・最頻値を計算したい場合のコードは以下。以外と手こずった。。 return sales.groupby([STORE_ID, ITEM_ID])[SALES_COUNT_LAG_1].rolling(window)\ .agg(["mean", "max", "min", "std", lambda x: x.mode()[0]]) \ .re…
single indexの場合は df.set_index("seq_idx") でいい。 multi indexの場合は一度reset_indexしないといけない。