iMind Developers Blog

iMind開発者ブログ

PySparkでUDFをregisterしてSQLから呼び出す

概要 PySparkで作成したUDFをPythonやSparkの経験がない人にも使ってもらいたい時は、registerしてSQLで呼び出せるようにするとハードルが下がる。 本稿はpysparkでUDFを書く、spark.udf.registerでUDFを登録する、クエリから呼び出す、といった一連の流れを…

MLFlowを使ってみる3 - models

概要 MLFlowの機能をざっと試す第三弾。tracking、projectsと扱ってきたので今回は最後のmodelsについて。 modelsは生成したモデルをsave、load、predictなどの機能を持ち、コマンドラインで指定モデルを使ってpredictが実行できたりもする。 本稿では扱わな…

MLFlowを使ってみる2 - projects

概要 MLFlowの機能をざっと試す第二弾。前回はtrackingを扱ったので今回はprojects。 projectsはdockerやcondaでプロジェクトの管理ができる。本稿ではdockerは扱わずcondaを利用する。 バージョン情報 mlflow==1.0.0 experimentの生成 今回の例で利用するex…

MLFlowを使ってみる1 - tracking

概要 機械学習周りの処理のトラッキングとかモデルの管理をしたかったので比較的手軽に扱えそうなMLFlowを試してみる。 本稿では基本機能の1つであるtrackingを用いて、scikit-learnでパラメータを変えつつ学習を行い、モデルや結果を保存する。 バージョン…

pyarrowによるPythonでのHDFS操作

概要 PythonでHDFSの操作をしたかったので、pyarrowに入っているclientを使ってみる。 類似のライブラリは他にもいろいろあるけど、pyarrowはその中でもメンテナンスが活発に行われている方なので安心感がある。 バージョン情報 Python 3.7.3 pyarrow==0.11.…

githubのプロジェクトをpip install

概要 pip installする際にgithubのmasterや任意のブランチからインストールしたい。 バージョン情報 pip 19.1.1 サンプルプロジェクト helloworldと出力するだけの自前ライブラリを用意してgithubにpushしておく。 ディレクトリ構成 ├── helloworld │ └── __…

Pythonのclickでコマンドライン引数を扱う

概要 Pythonでコマンドライン引数を扱う際に便利なclickについて、ありがちなケースでの使い方についてまとめる。 バージョン情報 Click==7.0 Python 3.7.3 コマンドライン引数の取得 簡易な例として、name(string)とage(int)の2つの引数を取るコードを書い…

PythonのclickのType一覧

概要 Pythonでコマンドライン引数を扱う際に便利なclickについて、利用可能なTypeについてまとめる。 バージョン情報 Click==7.0 Python 3.7.3 指定可能なタイプ 下記のTypeが利用できる。 string int float bool click.UUID click.File click.Path click.Ch…

gensimでword2vec

概要 Pythonでword2vecを実行する簡易な例として、gensimでWikipediaのリンク情報を用いて各記事の距離を出すコードを書く。 バージョン情報 Python 3.6.8 gensim==3.6.0 word2vec==0.9.4+2.g8204e5c 導入 必要なものはcondaで入れられる。gensimのword2vec…

Open Image Dataset v4を使ってみる

概要 Open Image Dataset v4から600クラスのデータを落としてきて中身を確認したり軽く使ってみたり、Pascal VOCの形式に変換したりする。 v5が出たこの時期にいまさらな記事。 ダウンロード 下記からダウンロードする https://storage.googleapis.com/openi…

pythonのrequestsでリダイレクト先を取る

概要 リクエスト先のURLが302等でリダイレクトをされた場合に、リクエスト先のURLを取得したい。 バージョン情報 requests==2.21.0 ソースコード リダイレクトURLを取るだけであればヘッダだけあれば良いのでgetではなくheadでリクエストを行い、レスポンス…

matplotlibで色をたくさん使う

概要 matplotlibで色分けしてグラフを表示したい時に、色をたくさん取ってくる方法について調べる。 バージョン情報 matplotlib==3.0.3 8色まで matplotlib.colors.BASE_COLORSで8色が出せる。用意されている色はb, g, r, c, m, y, k, w import matplotlib f…

PythonでWebスクレイピング

概要 仕事柄Webスクレイピングのコードを書くことがよくあるので、普段使っているコードをまとめておく。 バージョン情報 beautifulsoup4==4.7.1 requests==2.21.0 chardet==3.0.4 reppy==0.4.12 導入 $ pip install beautifulsoup4 requests chardet reppy …

Airflowのremoved stateのTaskを削除する

概要 Airflowでdagの実行中にタスクをソースコードから削除すると、stateがremovedになったタスクがTask Instancesのトップに表示されたままになることがある。 フィルタでState not contains removedとすれば消えるけど、邪魔なので根本的に削除する方法を…

AirflowのCheckOperatorでDBの値チェック

概要 AirflowのCheckOperatorを使ってテーブルのカウント等のチェックを行う。 バージョン情報 Python 3.6.7 apache-airflow==1.10.3 CheckOperatorの種類 name description CheckOperator 0やemptyをチェックする ValueCheckOperator 値が指定値と同じか、…

Python+OpenCVで画像をリサイズして保存する

概要 OpenCVで画像を読み込んでサイズを一定のルールで変更して保存する処理を実行する。 用途としては機械学習用に集めた画像データを保存しておく用として、最大で縦横のどっちか長い方が512pixelになるようにしておくことを想定している。 バージョン情報…

Tensorflow2.0 alphaのBEGINNER TUTORIALSを読む - その2

概要 Tensorflow2.0のalpha版が出ていたのでBIGGINER TUTORIALSを読む。 バージョン情報 tensorflow-gpu==2.0.0a0 Python 3.7.3 読んだページ Get started with TensorFlow 2.0 for beginnersのクイックスタート、服の分類問題、回帰、モデルの保存とリスト…

Tensorflow2.0 alphaのBEGINNER TUTORIALSを読む - その1

概要 Tensorflow2.0のalpha版が出ていたのでBIGGINER TUTORIALSを読む。 バージョン情報 tensorflow-gpu==2.0.0a0 Python 3.7.3 読んだページ Get started with TensorFlow 2.0 for beginnersのクイックスタート、服の分類問題、回帰、モデルの保存とリスト…

Pythonのbuilt-in Error/Exception一覧

概要 Pythonの例外を投げる時に「どれ使おう?」と迷うことが多いので一覧を作成する。 出しやすい例外については実際に発生するサンプルコードを掲載。 バージョン情報 Python 3.6.8 built-inの一覧表示 ipythonより下記のhelpから表示。 help(__builtins__…

Wondershaperによる帯域制限

概要 クラウド上にいるサーバーのネットワークの使用量をある程度キャップしたい。 バージョン情報 wondershaper 1.1a-9 Ubuntu 18.04.2 導入 $ sudo apt install wondershaper 制限をかける wondershaperで制限をかける際の文法は下記。 wondershaper [inte…

FaceNetを動かしてみる

概要 顔認識システムのFaceNetを使って顔の距離計算をしてみる。 バージョン情報 FaceNet Latest commit 096ed77 on 17 Apr 2018 顔認証の実装について 顔認証が可能な実装として他にOpenFaceがある。アルゴリズムはFaceNetに近い。 FaceNetはTensorflowとPy…

FaceNetの論文を読んだメモ

概要 顔認証の勉強中に、FaceNet: A Unified Embedding for Face Recognition and Clusteringを読む。そのメモ書き。 下記がその論文。 https://arxiv.org/abs/1503.03832 下記がその実装。 https://github.com/davidsandberg/facenet Abstract まずはFaceNe…

OpenCVとdlibによるFace Detection(顔認識)

概要 Face DetectしたかったのでOpenCVとdlibをそれぞれサンプルコードを動かす。 バージョン情報 Python 3.7.3 dlib==19.17.0 OpenCV==3.4.2 インストール condaで仮想環境作ってOpenCVとdlibを導入する。 pipとかjupyterとかscikit-imageとか他に使いそう…

scikit-imageとscikit-learn付属のサンプル画像

概要 画像処理のコードを書いてブログに例を載せたい時に、拾い物の写真だと権利周りが気になる。 そんな時に使えることがあるskimageやsklearnのサンプル画像を貼っていく。 バージョン情報 scikit-image==0.15.0 scikit-learn==0.20.3 データの配置場所 sc…

HBaseの情報をhiveで操作する

概要 HBaseに対してがっつりinsertやselectする際はhiveと連携させると楽だった。 バージョン情報 Hive 1.1.0 HBase 1.2.0 参考情報 https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration keyとvalueだけを持つテーブルの生成 今回のサンプル…

Airflowの日付マクロまとめ

概要 Airflowのテンプレートに日付を埋め込む時に毎回ググってる気がしてきたので、自分用のまとめを書いた。 バージョン情報 apache-airflow==1.10.3 参考URL https://airflow.apache.org/macros.html 確認用スクリプト contextの中にいるtsとかdsとかds_no…

AirflowのConnectionやVariableをCLIで投入する

概要 ConnectionやVariableの値はWeb UIから入れられるけど、実運用ではコマンドラインから構築できるようになっていた方が便利。 試しにConnectionとVariableにそれぞれ値を投入してみる。 バージョン情報 Python 3.6.7 apache-airflow==1.10.3 Connections…

hbase shellのコマンドまとめ

概要 HBaseを使う際のコマンドをhbase shellでちょっと確認。 バージョン情報 HBase 1.2.0 hbase shellの起動 $ hbase shell helpの参照 > help 機能ごとのhelpの参照。下記はcreateの例。 > help 'create' テーブル生成 exampleテーブルの生成。 > create '…

pandasのファイル出力形式まとめ

概要 pandasにはcsvやpickle、parquetなど様々な形式でのデータ出力が用意されている。 各出力形式で実際にデータを出力して結果や実行時間を確認してみる。 実行時間はipython上で%%timeを用いて計測。小数点以下はround。記事の最後に実行時間と出力サイズ…

Pythonのpsutilでハードウェアの情報を取得する

概要 psutilでCPUのコア数、ディスクの空き容量、メモリの使用量等、ハードウェアの情報を取得する。 バージョン情報 Python 3.6.8 psutil==4.4.2 Ubuntu 18.04.1 インストール $ pip install psutil CPUのコア数 import psutil psutil.cpu_count() => 8 上…