洋食の日記

洋食のことではなく、技術メモを書きます。たまにどうでも良いことも書きます。

LIBSVM/SVMLight形式のデータの読み込み/書き込みをするgemを公開した

はじめに LIBSVM形式のデータセットファイルを読み込み、データとラベルをNMatrixで返すライブラリが欲しかったので、作成してgemパッケージを公開した。 libsvmloader | RubyGems.org | your community gem host Pythonのsvmlight-loaderにお世話になってい…

Liblinear-Rubyによる線形SVMを試すついでにカーネル近似も試した

はじめに Liblinearは、線形SVMの実装として有名なライブラリ/ツールである。 これをRubyから叩くライブラリとして、Liblinear-Rubyがある。 Rubyの配列で表現された、特徴ベクトルとラベルをわたすだけで、線形SVMの訓練・テストが行える。 これで線形SVMに…

はてなブログProにしても広告を消すのには設定が必要だった

はてなブログProにすれば勝手に広告が消えると思ってたら、設定が必要だった。だいたい3ステップぐらい必要だった。広告を消したのは「広告って読み込み重いから鬱陶しいよね」という軽い気持ちから。 設定から、詳細設定タブを選択する。 広告を非表示で、…

MacではRubyのNMatrixでOpenBLASを使わなくてもLAPACKで十分に速かった

はじめに Rubyで線形代数・機械学習アルゴリズムの実装を行う場合、SciRubyのNMatrixが最適だろう。 このNMatrixで、 RやPythonのNumpyと同様に、後ろで叩いているBLAS/LAPACKを、OpenBLASやIntel MKLに変えることで、高速化することを考えた。 しかし、Mac…

Pandasで「ビジネス活用事例で学ぶデータサイエンス入門」を勉強する(第6章)

はじめに マーケティング寄りのデータ分析の知識を補うため、以下の本で勉強を始めた。事例ベースな内容で、とても読みやすい。 Pandasも習得したいので、Pandasに翻訳しながら読み進めている。今回は第6章を勉強した。 ビジネス活用事例で学ぶ データサイ…

Pandasで「ビジネス活用事例で学ぶデータサイエンス入門」を勉強する(第5章)

はじめに マーケティング寄りのデータ分析の知識を補うため、以下の本で勉強を始めた。事例ベースな内容で、とても読みやすい。 Pandasも習得したいので、Pandasに翻訳しながら読み進めている。今回は第5章を勉強した。 ビジネス活用事例で学ぶ データサイ…

Pandasで「ビジネス活用事例で学ぶデータサイエンス入門」を勉強する(第4章)

はじめに マーケティング寄りのデータ分析の知識を補うため、以下の本で勉強を始めた。事例ベースな内容で、とても読みやすい。 Pandasも習得したいので、Pandasに翻訳しながら読み進めている。今回は第4章を勉強した。 ビジネス活用事例で学ぶ データサイ…

Pandasで「ビジネス活用事例で学ぶデータサイエンス入門」を勉強する(第3章)

はじめに マーケティング寄りのデータ分析の知識を補うため、勉強を開始した。「チュートリアル的な事例ベースの教材がないかな〜」と色々と探していたところ、ぴったりの良い本が見つかった。第1章と第2章には、データ分析がどういう仕事か書かれている。…

PyCallを使えばRubyでもKerasでDeep Learningができる

mrknさんが開発しているPyCallを使うと、RubyからPythonオブジェクトを操作できる。 Rubyから、Pythonの機械学習・統計分析のツールを利用することを目的としており、 ネット上にもnumpyやscikit-learnを実行する例があがっている。 Rubyist Magazine - PyCa…

scikit-learnで近似最近傍探索したいときはLSHForestがある

2017/8/13追記: LSHForestはパフォーマンスがよろしくないため、0.19からDEPRECATEDとなった。0.21から削除されるようなので、使用しないほうが良い。 scikit-learnでは、ver. 0.16から近似最近傍探索手法のLSHForestが実装されている。LSHForestは、ハッシ…

Pythonで近似最近傍探索を試したいときはpyflannがちょうど良い

近似最近傍探索とは近似的に近いものを検索してくる技術で、普通に距離を計算して並べて近くにあるものを探すより速い。代表的なライブラリにFLANN(Fast Library for Approximate Nearest Neighbors)があり、これのPythonバインディングがpyflannになる。F…

scikit-learnで学習した分類器をjoblib.dumpで保存するときはcompressをTrueにするとファイルが一つにまとまって便利

scikit-learnで学習した分類器を保存する場合、joblib.dumpを使用するが、これだと、大量のnpyファイルが作られる。この場合、joblib.dumpのcompressを使うとよい。まず、例えば以下のような、train.pyがあるとする。 #!/usr/bin/env python # -*- coding: u…

NginxでUserDir的なことするのは設定ファイルにlocationを書くだけで良い

Apache2からNginxへの移行を進めていて、UserDir的なことをしようと思ったら、mod_userdirを有効にする感じではなかった。Debian GNU/Linuxであれば、/etc/nginx/sites-available/defaultを編集するだけでよい。PHPも動くようにしたいので、ついでにそれも設…

DebianでNginx上でPHPを動かすのはaptでPHP-FPMを入れて設定ファイルをちょっと編集するだけで良い

Nginxの設定ファイルの接しやすさに感動して、Apache2からNginxに完全移行することにした。 WebツールやデモシステムをPHPで作っていたので、とりあえず、PHPが動くようにする。 作業自体は大したことなくて、PHPのFastCGI実装のPHP-FPM(FastCGI Process Ma…

TheanoなKerasをデプロイするときはNginx+uWSGI+Flaskが良さそう

Kerasで作った画像認識プログラムを、Webサービスの形にしてみようと思い色々ためした。 画像認識処理をAPIの形で立ち上げ、フロントから叩くことにした。 複雑で大規模な構造のAPIにはならないので、フレームワークにはFlaskを選択した。 はじめ、Apache2+m…

ポート番号が被らなければNginxとApache2を共存できる

Debian GNU/LinuxにApache2を入れてWebサーバーを構築している。Nginxを試してみたいので、共存させることを試みた。 まずは、インストールする。ここで、先にApache2を止めておかないと、Nginxのインストールがコケる。 $ sudo systemctl stop apache2.serv…

pipでuwsgiのインストールに失敗したのはPythonの共有ライブラリがなかったため

Debianのパッケージとは別で、独自にビルドしたPythonを、/usr/localに置いている。 この状態で、uwsgiをpipでインストールしようとしたら、ビルドで失敗した。 $ sudo /usr/local/bin/pip install uwsgi ... *** uWSGI linking *** ... /tmp/ccDFvj9Y.ltran…