日々精進

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

2016-08-01から1ヶ月間の記事一覧

JupyterNotebookでCellの実行が終わったら通知する

AI

jupyter-notifyパッケージを入れると通知できるようになる。デスクトップに通知がフワッと出るだけだから気付かないこともありそうだけど。。 インストール手順は以下参照。 github.com これを入れるとCellの先頭に%%notifyと書くと通知が出るようになる。

Seriesの全値をstripする

AI

series.str.strip() を実行するとすべてstripできる。 ただし、文字列以外の値がSeriesに含まれている場合エラーになるので注意。 read_csvはSeriesに含まれる値によってdtypeが変わるので厄介。。 読み込むときにread_csv('path', dtype=str) のように型を…

Series.value_counts()で頻度一覧を出力する

AI

前処理の実装時にどんな値がどれだけあるのかを確認するときにSeries.value_counts()を使う。 これだけだとNaNの数が分からないのでSeries.isnull().sum()もよく使う。 参考: note.nkmk.me

Series.mapで特定のvalueのみ変換する

AI

以下のようにすると、'a'以外の値はNaNになってしまう。 series.map({'a':1} 'a'以外は元の値のままにしてほしい。。という場合はfunctionを作って渡すしか無いっぽい。 以下のようなイメージ。 def to_int(val): if val == 'a': return 1 else: return val …

型判定はtype(val) == intでなくisinstance(val, int)を使う

AI

Pythonの型判定について。 isinstance(val, int)はサブクラスでもTrueになるというメリットがある。 つまり、valがint64でもint32でもisinstance(val, int)はTrueになる。 参考: stackoverflow.com

S3にファイルがあるかどうかを判定する

AI

以下の関数で判定できる。 import boto3 import botocore BUCKET = "バケット名" def exist_file_in_s3(key): s3 = boto3.resource('s3') try: s3.Object(BUCKET, key).load() except botocore.exceptions.ClientError as e: if e.response['Error']['Code']…

matplotlibでグラフが重なる

AI

subplotを使って複数のグラフを並べて描いたが6x4のマスで描くとグラフがかなり重なってしまった。 そういう場合はplt.figure() を呼ぶと別の図として描画してくれる(Jupyter上だと縦にグラフが並ぶようになる) 参考: ja.stackoverflow.com

Mobile SafariでWebRTCで動画をWebに表示する時の解像度

IT

Mobile SafariでWebRTCで動画をWebに表示する時の解像度は自由に選べるわけではなく、 以下の選択肢から選ぶ必要がある。 320x240 640x480 1280x720 参考: stackoverflow.com

Windows Subsystem for LinuxからWindowsのファイルにアクセスする方法

IT

以下のようなコマンドを実行するとCドライブのフォルダに移動できるので、そこから色々やればよい。 cd /mnt/c/Users/<ubuntu.username>/Pictures 参考: stackoverflow.com</ubuntu.username>

Windows Subsystem for Linuxを再起動する方法

IT

ターミナルを閉じてもWSLが停止するわけではないっぽい。以下を実行してからexitを実行すると再起動する。 sudo touch /var/run/reboot-required 参考: superuser.com

Windows Subsystem for Linuxインストール時に「ファイル システムを展開しています。この処理には数分かかります...」から進まない

IT

原因はWindows Subsystem for Linuxのインストール処理の途中でapt-getか何かがネットワークアクセスをしているが、 Proxyの設定がされていないのでインターネットと通信できず処理が止まっていたためだった。インストール完了前のUbuntuで動いているapt-get…

sshで秘密鍵を使ってサーバにログインし、rsyncでローカルとサーバのファイルを同期する

IT

rsyncのコマンドを以下のようにするとできた。 ポイントはサーバにログインするsshのコマンドを-e "ssh -p 10022"のように書くのでは無く.ssh/configにHOST dev_serverの設定を書くこと。 -eを使ってsshコマンドを書いた場合、-iオプションを使っても秘密鍵…

Windows Subsystem for Linuxでinotifywaitを実行すると「Invalid argument」エラー

IT

原因はWindows Subsystem for Linuxがinotifywaitが使っているファイル監視APIに対応していないため。 Windows 10 Insiders build #14942で対応済らしいが、俺が使っているWindows10のバージョンは14942より低いのでだめだった。。 本当はファイル変更通知を…

apt-getを実行すると「Connecting to archive.ubuntu.com (2001:67c:1560:8001::11)]」で固まる

IT

括弧の中のIPアドレスがIPv6アドレスになっているのがポイント。 原因はIPv4アドレスしか使えない環境なのにIPv6アドレスでアクセスしていること。 以下のようにオプションでIPv4を強制すると直る。 sudo apt-get -o Acquire::ForceIPv4=true update 参考: …

apt-getを実行すると「0% [Connecting to archive.ubuntu.com (91.189.88.162)]」で固まる

IT

原因は社内プロキシが通信をブロックしていること。環境変数のHTTP_PROXYなどは設定してあるから大丈夫だと思ってた。。 /etc/apt/apt.conf にプロキシ設定を書かないといけないっぽい。 以下 sudo nano /etc/apt/apt.conf を実行して以下をファイルに書き込…

sudoを実行すると「sudo: unable to resolve host 」が表示される

IT

以下を参考に/etc/hostsにホスト名を追加すると直った。 qiita.com

Navigator.getUserMediaはdeprecatedという罠

IT

WebRTCを使いたい・・となったのでサンプルコードを探し、発見したコードが Navigator.getUserMedia を使った実装だった。 それをMobile Safariの上で動かしてみたが思い通りに動かずはまった。。 原因は Navigator.getUserMedia がすでにDeprecatedになって…

classification_report関数を使うと適合率・再現率・F1値などが一気に出せて便利

AI

classification_report関数を使うと適合率・再現率・F1値などが一気に出せて便利。 今までsklearn.metrics.precision_scoreとか使って一個ずつ出してた。。 参考: looseleaf0727.hatenablog.jp

scikit learnが対応しているアルゴリズムのうちどれを使うべきか

AI

どのアルゴリズムを使うべきかを判断するフローチャートがあるのでそれを使う。 詳細は以下参照。 qiita.com ただし、これはscikit learnが実装しているアルゴリズムのみを対象としているのでDeep Learningなどは出てこない。

Canvasの画像を保存する方法

IT

iOS/Androidでcanvasに描画した画像をメールで送信する手順は以下。 ・以下の処理を実行する(保存ボタンタップ時の処理で行う) const image = canvas.toDataURL("image/png"); window.location.href=image ・別タブで画像が表示される ・画像を長押しする…

Pandasのパフォーマンスチューニング

AI

以下のコンペのデータ(学習データは1400万行ぐらい)の前処理・学習・予測まで回そうとすると、手元のマシンで15時間かかる・・・ということがわかったのでパフォチューした。 www.kaggle.com やったことは以下。 Jupyterの全セルに%%timeを埋めて計測(デー…

Outlookで定期的な予定の時間を変更する方法

IT

定期的な予定を開き、「定期的なアイテム」をクリックすると時間を変更するウィンドウが表示される。 手順の詳細は以下参照。機械翻訳されたページだから読みづらいが。。 https://www.extendoffice.com/ja/documents/outlook/4192-outlook-calendar-change-…

gitにバイナリファイルを含めるべきか

AI

画像などのバイナリファイルをgitにcommitすべきかどうかだが、自分はすべきというスタンス(1GBを越えるぐらい大量でなければ)。 理由は以下。 画像などもシステムを動かすのに必要なリソースであり、コードの近くに置くべき(ネットからとってくるとか、…

日付の前処理について

AI

日付(アクセス日時とか登録日とか)が特徴量に含まれている場合、どう前処理すべきか。 そのまま使うことは少ない。理由は季節性・曜日の影響などが分からないので。解く問題によって変わるが、以下のようなやり方がある。 年・月・日にそれぞれ分ける。年…

PythonのLambdaは複数行のブロックを持てない

AI

括弧でくくってreturnされたオブジェクトのメソッドを呼び出すということはできるが。。 まあ素直に関数を定義して使った方がよさそう。 参考: programming-study.com

LightGBMのtrainデータにカテゴリ変数を含めると「ValueError: could not convert string to float」エラー

AI

原因はカテゴリ変数の場合は数値に変換してからLightGBMに渡さないといけないため。 trainメソッドにはcategorical_featureという引数があり、これでカテゴリ変数がどれか指定するがその値は以下の制約がある。 ・int32の範囲の数値 ・0から連続した数値にな…

conda installを実行すると「An error occurred while uninstalling package 'conda-forge::cryptography-2.3.1」

AI

以下のようなエラーメッセージが出た。 An error occurred while uninstalling package 'conda-forge::cryptography-2.3.1 ERROR conda.core.link:_execute(507): An error occurred while installing package 原因は不明だが、virtual envを作り直して再度…

IntelliJでJupyterNotebookでPandasのDataFrameを表示出来ない

AI

以下と同じ現象。 stackoverflow.com これはIntelliJ/PyCharmのバグで、Issueがあがっているがまだ対応されていない。 https://youtrack.jetbrains.com/issue/PY-25931 もう報告されてから1年以上経ってるんですが。。 こりゃデータ分析にIntelliJは使えない…

JupyterNotebookのファイルのパスを取得する方法は無い

AI

モチベーションは以下。 JupyterNotebookから自分が作成した.pyファイルを読み込む場合、%load ./tmp.py のように指定することになる この時のカレントディレクトリはAnacondaPromptでjupyterコマンドを実行したパスになる。もしくはJupyterのオプションでも…

IntelliJでJupyterNotebookのCellを実行するとForbiddenエラー

AI

一度Jupyterサーバを終了し、実行し直すと発生した。 JupyterサーバのURLを問い合わせるダイアログに新しく起動したJupyterサーバのURLを入れてもだめ。 原因はよくわからないがIntelliJを再起動したら直った。