2019年6月2日

Windowsでもhttp_proxyとhttps_proxyを設定したほうが捗る

最近はPowershellよりPythonを使うことが多くなりました。
Linux発のマルチプラットフォームソフトウェアは、環境変数http_proxy、https_proxyを使用する(使用可能な)ことが多いです。
なので、Windows環境であっても、Proxyを使用している社内環境では環境変数を設定しておくことをおすすめします。

流石に環境変数の設定手順はMSに転がっているだろうと探したけど、XPしか見つからなかった件。日本市場は見捨てられて幾星霜という話だし、やる気ないね。
https://support.microsoft.com/ja-jp/help/310519/how-to-manage-environment-variables-in-windows-xp

Windows10だとスタートメニューから「設定」を起動し、「設定」の検索窓で「環境」と入れると「環境変数を編集」という項目が表示されるので、そこから先はXPと同様の手順で環境変数を入れましょう。


2019年3月14日

AzureでPythonを動かす時のハマりポイント:Linuxのリージョン制限

前置き


Azure においてLinuxサービスはプレビュー段階であり、特定のリージョンでのみ動作します。
https://github.com/Azure/Azure-Functions/wiki/Azure-Functions-on-Linux-Preview
※本件は2019年3月現在の話であり、今後変更となる可能性もあります。

内容


以下の試験コードを実行したところ、デプロイに失敗しました。
https://docs.microsoft.com/ja-jp/azure/app-service/containers/quickstart-python?toc=%2Fpython%2Fazure%2FTOC.json

その際のエラーメッセージはこちらです。
Requested features are not supported in region.

以下に対処方法が書かれていました。
https://github.com/Microsoft/vscode-azurefunctions/issues/702

つまり、以下のように変えればいいということになります。

az webapp up -n <app_name>

↓

az webapp up --location "East Asia" -n <app_name>

2019年3月12日

Azure のストレージへファイルをまとめて転送するにはSMB共有でドライブをマウントするのが早かった件

前置き


タイトルがすべて。

最初は「az storage file upload」でファイルを1個ずつUploadしようかと思ったのだけれど、圧倒的に面倒で重いことが判明したので別の方法を探した次第。
そうしたらファイル共有する方法を見つけた次第。

内容


Azure PowerShell moduleを入れていない場合、以下の手順にて入れます。
https://docs.microsoft.com/ja-jp/powershell/azure/install-az-ps?view=azps-1.4.0

以下の手順にてファイル共有へマウントします。
https://docs.microsoft.com/ja-jp/azure/storage/files/storage-how-to-use-files-windows

注意事項はConnect-AzAccountしてから実施することと、<desired-drive-letter>はHなどでいい(NET USEのようにコロンはいらない)の2点です。

2019年2月26日

Client Hyper-Vを入れているWindows10でネットワークに接続できなくなった件

前置き


忙しくて更新できてなかったので、このままじゃいけないと簡単な記事を作成することでお茶を濁すことにしました。なによりも継続が大事。

前提


Windows10でネットワークにつながらくなって、簡単にググってみたけれども対処方法にたどり着けなかったので、後進のために記事を残します。

まず、前提としてClient Hyper-Vを導入している人限定です。
そうではない人には役に立たない情報なので引き返してください。

今回の事象はWiFiでおきましたが、無線でなくても有線LANでも発生すると思います。
なお、なぜこの事象に至ったかは未だもって不明です。

確認項目


Client Hyper-VではWiFi、有線のどちらであっても、ペアレントOSからは仮想NICとして認識されております。
そのため、単にipconfigを実行しても、WiFiにもかかわらず単にconnect/disconnect状態で表示されます。

であれば、仮想スイッチマネージャーで状態をみましょうということになりますね。

そしてHyper-V マネージャから仮想スイッチマネージャーを起動したところ、管理オペレーティングシステムとの共有チェックボックスが外れておりました。

これをチェックしたところちゃんと使えるようになった次第です。
NICの再起動とかしたかも知れませんが、そこまでは記憶にございませんので、チェックが外れていならば、チェックを入れた上で刺激を与えれば直るものとお考えいただければ幸いです。

2018年12月12日

GPU版Tensorflowをインストールしてみた

前置き


思いの外ハマるので備忘録として残す。
公式:https://www.tensorflow.org/install/gpu
お世話になったサイト
http://cookie-box.hatenablog.com/entry/2018/09/19/201044
https://qiita.com/fulcrum/items/ad6719d47b5c33ded241
https://github.com/tensorflow/tensorflow/issues/22794
https://qiita.com/ozaki_physics/items/985188feb92570e5b82d

解説

言ってしまえばなんのことはなく、バージョン不一致だとNGなので必ず同じバージョンを利用する必要がある、というだけの話。指定より新しいバージョンでは駄目で、必ず指定バージョンを利用すること。

2018年12月現在、Tensorflowのバージョンはtensorflow_gpu-1.12.0である。
現時点では、以下のバージョンが最新として利用できる。
* CUDA Toolkit 9.0
* cuDNN v7.4 for CUDA 9.0

この辺は好きなもので良さそう。
* NVIDIA GPU drivers
* VC++2015再配布パッケージ(Windows版)

時期が変わればバージョンも変わると思うが、大事なのは公式で記載しているバージョンと同じものを用意すること。後方互換性がないため上位バージョンがNG、という話。

最新のAnacondaはPythonは3.7だが、Pythonは3.7だとNGなので、仮想環境で3.6を用意するといい。
以下の構文をAnaconda Promptで実行する。なお「tf-gpu」が仮想環境名となる。

conda create -y -n tf-gpu pip python=3.6 anaconda

activate tf-gpu

conda install -y -c aaronzs tensorflow-gpu
conda install -y -c anaconda cudatoolkit
conda install -y -c anaconda cudnn
conda install -y keras-gpu

そして、そのままインタラクティブモードを起動して動作確認をする。

python
from tensorflow.python.client import device_lib
device_lib.list_local_devices()

結果にGPUが表示されたらOKとなる。

上手くできなかったら一回削除してやり直すと吉。
conda remove -n tf-gpu --all

2018年11月24日

小ネタ:pandasのas_matrix()はvaluesに置き換えよう

前置き


最近はデータサイエンティストを目指してPythonを習得しております。
今回は、Python3.7でas_matrix()が非推奨となったので、その話です。
簡単にググって見つからなかったので誰かの助けとなればと思い記載いたします。
元ネタは以下になります。
scikit-learn で線形回帰 (単回帰分析・重回帰分析)
Python: Method .as_matrix will be removed in a future version. Use .values instead


Pandasから配列(リスト)への変換

先に挙げたページから、赤ワインのCSVをPandasへ取り込んで、DataFrame(およびSeries)を配列に変換して予測する処理について、コードを引用いたします。
# %% scikit-learn で線形回帰 (単回帰分析・重回帰分析)
# https://pythondatascience.plavox.info/scikit-learn/%E7%B7%9A%E5%BD%A2%E5%9B%9E%E5%B8%B0

import pandas as pd
import numpy as np

wine = pd.read_csv("winequality-red.csv", sep=";")
wine.head

# %%
# sklearn.linear_model.LinearRegression クラスを読み込み
from sklearn import linear_model
clf = linear_model.LinearRegression()

# 説明変数に "density (濃度)" を利用
X = wine.loc[:, ['density']].as_matrix()  # ★該当箇所

# 目的変数に "alcohol (アルコール度数)" を利用
Y = wine['alcohol'].as_matrix()  # ★該当箇所

# %%
# 予測モデルを作成
clf.fit(X, Y)

# 回帰係数
print(clf.coef_)

# 切片 (誤差)
print(clf.intercept_)

# 決定係数
print(clf.score(X, Y))
※引用コードに対し、一部コメントを追加しています
前回紹介しました、VSCodeのJupyter Interactiveモードで動かす前提で、セルを分割しております。2セル目に「★該当箇所」というコメントを付与しております。

このコードはPython3.6では特に支障なく動きますが、3.7だと以下の警告が発生します。

C:\ProgramData\Anaconda3\lib\site-packages\ipykernel_launcher.py:10: FutureWarning: 
Method .as_matrix will be removed in a future version. Use .values instead.

これは英語のそのままだけれど、メソッドas_matrix()は廃止予定だからvaluesに置き換えてほしいという話です。
ただ、代わりに使えというvaluesってなんじゃらほいっていうのがわからずググってしまった次第です。
そして冒頭に紹介したstackoverflowのページに辿り着いたということです。

解としては、なんのことはなく、valuesというプロパティを使用しろという結論でした。 ですので、書き換えるならば以下のようになります。
# %%
# sklearn.linear_model.LinearRegression クラスを読み込み
from sklearn import linear_model
clf = linear_model.LinearRegression()

# 説明変数に "density (濃度)" を利用
X = wine.loc[:, ['density']].values  # ★変更後

# 目的変数に "alcohol (アルコール度数)" を利用
Y = wine['alcohol'].values  # ★変更後

これで警告が収まりました。
近い将来廃止されるようですし、今からコーディングする方はvaluesに置き換えましょう。

2018年11月20日

小ネタ:ありがとうJupyter拡張、こんにちはPython拡張Interactive

前置き

とても優秀な存在であった、Visual Studio CodeのJupyter拡張ですが、本家Python拡張にて同等機能が取り込まれたことにより、不要な拡張機能となりました。
参考:
https://blogs.msdn.microsoft.com/pythonengineering/2018/11/08/python-in-visual-studio-code-october-2018-release/
https://news.mynavi.jp/article/20181109-721502/

使い方

Python拡張のInteractiveモードは、元祖Jupyter拡張と同じく、Cellを定義してあげれば動きます。
先のリンクにあるように、「# %%」と入れればセルの出来上がりです。Run CellをクリックすればJupyter Notebookのように動いてくれます。たったこれだけなので細かい説明は不要でしょう。

じゃぁ、なぜわざわざブログを起こしたのかといえば、そう、キーバインドです。

今までJupyter 拡張を利用していた人は、Ctrl+Enterでセル実行をするのが当たり前になっていたので、今更ショートカットキーなしの生活には戻れますまい。
そんな訳で、keybindings.jsonに以下の項目を足してあげましょう。


[
    {
        "key": "ctrl+enter",
        "command": "python.datascience.runcell",
        "when": "editorTextFocus"

    },
    {
        "key": "ctrl+shift+enter",
        "command": "python.datascience.runallcells",
        "when": "editorTextFocus"
    }
]
これで、今までどおりに実行できます。ついでにCtrl+Shift+Enterで全セル実行も定義してみました。

補足

Pythonの導入等にお困りの場合には以下のリンクから辿ってください。
https://ntnl-it-wiz.blogspot.com/2018/09/vs-code-pythonelasticsearch.html

追記

記事を上げたときには気が付かなかったけど、Run CellはShift+Enterでキーバインドされていますね。 新規に使用する人は互換性を気にする必要もないだろうし、Jupyter Notebookと同じキーバインドだし、Shift+Enterで覚えればよさげですね。

TIPS:VSCodeで日本語化がうまくいかないとき

前置き Visual Studio Codeで拡張機能「 Japanese Language Pack for Visual Studio Code 」を入れたら日本語になりますよね。 でも、「 Remote Development 」で色々な環境を日本語化してると、偶に...