日々精進

新しく学んだことを書き留めていきます

2017-07-01から1ヶ月間の記事一覧

ターミナルから実行したプロセスを後からnohupする方法

AI

モデルの学習処理など、時間がかかるプロセスはnohup ~ &を使うことが多いが、実行してから「あ、これ時間かかるやつだ。。」 と気付くこともある。 そういうときは以下手順で後からnohupと&をつけたのと同じ状態に出来る。 Ctrl-Z jobsコマンドでnohupした…

Java8⇒Java11移行時にやること

IT

以下が参考になりました。 OracleのJava11移行ガイド https://docs.oracle.com/javase/jp/11/migrate/index.html#JSMIG-GUID-D7936F0D-08A9-411E-AD2F-E14A38DA56A7 ヌーラボのJava8⇒Java9移行ブログ https://nulab.com/ja/blog/nulab/java9-migration/ Java…

Windows Search IndexerがCPU負荷を上げている問題

IT

PCが重いのでタスクマネージャを見てみると「Windows Search Indexer」が結構CPUを使っていたので以下対応をしたところCPU負荷が減り快適になりました。 mushikabu.net

JupyterNotebookのコードをgitで管理する

AI

そのままcommitするとoutputの情報も入ってるのですごい量になる。 コードのみcommitするにはClear All Outputsを実行してからcommitすればいい。 もっと自動化する方法もあるけど一旦これでいいか。。 参考: qiita.com

ブラウザでカメラを間違って拒否した場合に、端末設定から許可に変更してもやっぱりカメラが使えない

IT

(iPhoneでしか調査してません)原因はブラウザが起動時にしかiPhoneの設定カメラ設定を読み込んでないっぽいこと。ブラウザを一度終了させて再起動しないといけない。 ただし、以下で紹介されているようにブラウザ上でカメラの許可設定を変更することもでき…

ブラウザの仕様の調べ方

IT

MDNは日本語だし読みやすいしでよく使う。 developer.mozilla.org もっと正式な情報源がいい場合はW3Cの仕様書を見る。でもまだworking draftだったり、Issueに「Safariはこの仕様に従ってないよ!」と書かれていたりして困ることがある。。 www.w3.org W3C…

pandasで時系列データをある期間に絞る

AI

例えば、日次データを30日間だけに絞ってグラフを描きたいというような場合。 indexがdatetimeになっている場合、以下のようにして30日間に絞れる。 start_date = list(jan_tenpo_df.index)[0] df = df.loc[start_date:start_date + pd.Timedelta(days=30)] …

pandasで上位N%の行を絞り込む

AI

例えば、 df[df.a < df.a.quantile(.95)] のようにすれば上位5%以下の行を絞り込める。 pandas力もっとつけたい。。 参考: https://stackoverflow.com/questions/18580461/eliminating-all-data-over-a-given-percentile

SageMaker Notebookにconda環境を追加するにはLifecycle Configurationsを使うといい

AI

Lifecycle ConfigurationsはNotebookインスタンス起動時などのタイミングで実行するスクリプトを設定できる。 これを使ってNotebookインスタンス起動時にconda環境を作るスクリプトを実行すればよい。 まあ、NotebookインスタンスのTerminalでコマンド実行し…

ハイパーパラメータの管理を楽にするライブラリHydra

AI

ハイパーパラメータは以下の変遷を辿ることがおおい。 コマンドライン引数で渡す⇒数が多くなってきてカオスに⇒yamlファイルに移す Hydraはさらに使いやすく、複数のyamlファイルをマージしたり、ハイパーパラメータをコマンドライン引数で上書きしたりできる…

欠損のある時系列データの穴埋めをする

AI

例えば、売上データに売上が0の日の行がない場合。 pandasでグラフを描く場合などはすべての日の行が必要。 asfreqを使うと0うめできる。 df= df.asfreq("D", fill_value=0) 参考: note.nkmk.me

pd.read_parquetで「read_parquet ClientError: An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied」エラー

AI

Permissionが足りないように見えるけど、aws cpコマンドだとダウンロードできる。 原因は不明だけど、notebookのsessionを一度shutdownして再起動すると直った。 なんなんだ一体。。

matplotlibのタイトルなどで日本語が文字化けする

IT

日本語フォントがLinux環境に無いのが原因なので、まずは日本語フォントをインストールする必要がある。手順は以下参照。 qiita.com しかしこれだけだと直らなかった。 ~/.cache/matplotlib/fontlist-v310.json を削除し、JupyterLabのsessionをshutdownし、…

IntelliJで「cannot resolve symbol」エラー

IT

原因ははっきりわからないが、.ideaフォルダを消してプロジェクトを開き直したら直った。 Invalidate Cache/Restartは効かなかった。 参考: cozylifeblog.tokyo

PyCharmの.imlファイルに余計な差分が出て困る問題

AI

.imlファイルの中のjdkNameのところにいらない差分がでやすい。特に、SSH Interpreterを使っている場合はポート番号などがjdkNameに含まれており、 自分の環境で違うポート番号を使おうとすると差分が出てしまう。 <orderEntry type="jdk" jdkName="Remote Python 3.6.6" jdkType="Python SDK" /> 解決策はInterpreter nameをプロジェクト</orderentry>…

conda installのdebugログを出す

AI

conda installが上手く行かない場合、debugログを見たいことがある。 そういう場合は -vv オプションを付けるとdebugログを見られる。 参考: github.com

pythonのclassのメソッド定義のtype hintに自身のクラスを指定したい

AI

例えば、以下のようにクラスAのメソッドの返値にクラスAを指定したい場合、普通に書くとエラーになる。 class A: def create_instance(self) ->A: ... これはclass Aの定義が完了する前にclass Aを参照しているため。 python 3.7以降はfuture importを使うこ…

複数ファイルに分けて実装したコードをkaggle notebookで実行するにはどうすればいいか問題

AI

kaggleのnotebookはjupyter notebook形式で実行するか一つのscriptファイルを実行するかいずれかしかできないので、 開発環境でクラス毎に.pyファイルを分けて実装している場合、notebookでどう実行するかが問題になる。 一番良いのは恐らく自分が書いたコー…

pythonで「ImportError: cannot import name」エラー

AI

原因はimportするモジュール同士が循環参照になっていること。 自分の場合は抽象クラスにFactoryMethodを作り、サブクラスのインスタンスを生成しようとした時にこのエラーが出た。 Factoryクラスを別に作ってそこにFactoryMethodを実装することで回避した。…

XGBoostモデルでpredictすると「AttributeError: 'numpy.ndarray' object has no attribute 'feature_names'」エラー

AI

原因はXGBoostのpredictにはndarrayでなく、xgboost.DMatrixを渡さないといけないため。 xgb.DMatrix(x_df)のようにpd.DataFrameをDMatrixに変換して渡すと直った。 参考: stackoverflow.com

kaggleのnotebookでエラーメッセージが見切れていて見えない問題

AI

notebookをscriptモードで使っている時に、▶ボタンをクリックしてscriptを実行すると、以下のようにエラーメッセージが見切れてしまうことがある。 FileNotFoundError [Errno 2] File b'/opt/conda/lib/python3.6/site-packages/data_science_... File -> Ke…

conda createを実行すると「resolvepackagenotfound - vc==14.1=h0510ff6_3 - vs2015_runtime==15.5.2=3」エラー

IT

原因はWindows環境用のパッケージがenvirnment.yamlに含まれているため。vs2015_runtimeとか。 それらを削除すると直った。というか、プログラムの実行に支障ないなら入れないで欲しい。。

gitのautocrlfの設定をリポジトリ単位で共通にする方法

IT

.gitattributesを使うとリポジトリを利用している人のautocrlfの設定を共通化できる。 設定漏れをなくせるのでいい。今のプロジェクトではautocrlf=falseにして改行コードをLFに統一している。 理由は開発用PCがWindowsで、そこから.pyや.yamlなどのテキスト…

健保組合がMyHealthWebを提供しているところはそれを使って医療費控除申請をするととても楽

今まで知らなかったんだけど、2017年からITS健保にMyHealthWebというサイトができていた。調べてみたら他の健保も同様のサイトがあるところが結構あるっぽい。このサイトはSaaSで色んな健保組合と契約してるんだろうな。 https://its-kenpo-oauth.mhweb.jp/o…

pytestでparameterized test

IT

以下のように@pytest.mark.parametrizeを使ってparameterized testができる。 テスト失敗したらその時のパラメータの値もログに出るし,便利。 testdata = [ (datetime(2001, 12, 12), datetime(2001, 12, 11), timedelta(1)), (datetime(2001, 12, 11), date…

pythonでヒアドキュメントを書きたい

IT

qiita.com が参考になりました。 以下のように書くとインデントと前後の改行を無視してくれる。 もっとすんなり書ければいいけど。。 import textwrap string = textwrap.dedent(''' This is a {what}. I'm from {where}. ''').format(what="apple", where="…

pythonのテストコードで、listのすべての要素が期待結果と一致することをチェックする

IT

以下のようにall関数とリスト内包表記を使って簡潔に書ける。ただ、リストの中に自分で定義したクラスがあったらそのeqが正しく実装されていることが必要。 assert all([a == b for a, b in zip(actual, ['bl', 'direction', 'day'])]) 参考: stackoverflow…

PyCharmの文字サイズをCtrl + マウスホイールで変更可能にする

IT

以下参照。会議室でPyCharmを皆で見ている時とか便利。 minus9d.hatenablog.com

pythonでstaticコンストラクタを使いたい

IT

static変数を初期化する処理をstaticコンストラクタに書きたいという場合。 pythonにはstaticコンストラクタは無いけど、.pyファイルは普通にpythonスクリプトとして実行されるので 以下のようにクラス定義の後に初期化処理を実装すればよい。 class A(objec…

__init__.pyにはロジックは実装すべきでない

IT

init.pyとは何なのかは以下がわかりやすかったです。 qiita.com とりあえずpythonの開発をするに当たっては以下を意識していればいいと思います。 init.pyにはモジュールの初期化処理以外はかかない(import順に制約がある場合、import文を書くとか。いや、…