Posts on 機械学習

MNIST手書き文字機械学習。TensorFlowチュートリアルの前に、scikit-learnのSVMで復習する。その2。

前回惨敗の正答率だった、SVMによるMNIST手書き文字分類。 まずはscikit-learn付属のデータセットで復習してみることにする。 scikit-learn付属の手書き文字データセットは解像度がひどい こんな感じで試してみると、 from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from sklearn.svm import SVC d = load_digits() X_train, X_test, y_train, y_test = train_test_split(d.data, d.target, train_size=0.8) svc = SVC() f…

MNIST手書き文字機械学習。TensorFlowチュートリアルの前に、scikit-learnのSVMで復習する。

TensorFlowを手持ちのMacにインストールしてチュートリアルを写経...する前に、まずは復習がてらscikit-learnのSVMを使って分類してみようと思います。 久々ですっかり忘れてきているもので。 MNIST手書き文字イメージデータのダウンロード THE MNIST DATABASEからトレーニング用とテスト用の手書きイメージデータをダウンロードしましょう。 以下4つです。 train-images-idx3-ubyte.gz: training set images (9912422 bytes) train-labels-idx1-ubyte.gz: training set labels (28881 bytes) t10k-images-idx3-ubyte.gz: test set images (1648877 bytes) t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes) 手で落としてgunzipしてもいいんですが、せっかくなのでpythonで書いてみます。 MNIST手書きイメージデータを扱うためだけのクラス ダウンロードしてgzip伸長する関数を書くと、こうなります。 …最初メモリを節約しようとgeneratorで書いたんですが、データ数が多すぎて処理が重くなったのでやめました^^; 代わりに、流行り?のasyncioを使います。 MNIST手書き文字イメージデータのDataFrame化 先ほどのクラスを使えば、手書き文字イメージデータをDataFrame化するのは簡単です。 from mnist_dl import…

機械学習ネタ。ピアソンの相関係数をヒートマップ化してプロットするには。

Udemyのデータサイエンス講習は一通りやってしまったので、復習するのもいいけど何か新しいことをやりたいと思い… これを買ってしまいました。 Python機械学習プログラミング 達人データサイエンティストによる理論と実践 impress top gearシリーズ[Kindle版]posted with ヨメレバSebastian Raschka,株式会社クイープ,福島 真太朗 インプレス 2016-06-30 KindleAmazon[書籍版] 大学数学から離れて10年以上立つので正直きついですが、かなり掘り下げて解説してくれるので理解が深まります。 その中でも、やってみて面白かったことを備忘録と練習を兼ねて、本書とは別のデータセット、irisデータを使い、特徴量同士の相関をヒートマップ化してみようと思います。 まずは特徴量同士のpairplot出力を見てみます。 この図を出すには、以下のようにします。 import numpy as np import seaborn as sns import pandas as pd from sklearn.datasets import load_iris iris = load_iris() iris_df = pd.…

機械学習ライブラリTensorFlowの日本語書籍まとめ。

まだ全部は読破できていない上、1冊は発売予定なんですが… Google製機械(深層)学習ライブラリ、TensorFlowの解説本を紹介します。 TensorFlowのフロントエンドがPythonなので、どの書籍もPythonの基本を理解していることが前提の内容となっています。 まずはこちらのポップな表紙の「TensorFlowはじめました」。 TensorFlowはじめました 実践!最新Googleマシンラーニング (NextPublishing)[Kindle版]posted with ヨメレバ有山 圭二 インプレスR&D 2016-07-29 KindleAmazon[書籍版] 本当にTensorFlowとは何なのか? Tensorとは何か? といった、TensorFlow公式ページのチュートリアルを読めば分かるような位置から図解入りで解説してくれます。 Amazonの評価コメントの評価は低いですが、入門としてはとてもお勧めだと思います。自分のような入門者にとっては、概念を図解してくれるだけでも理解のとっかかりになって、有難いものです。 次は、「TensorFlowで学ぶディープラーニング入門」。はい、まだ発売してません。すいません。 TensorFlowで学ぶディープラーニング入門 ~畳み込みニューラルネットワーク徹底解説~posted with ヨメレバ中井 悦司 マイナビ出版 2016-09-28 AmazonKindle楽天ブックス でも上記の書籍は、副題からも、この中井悦司さんが出されている他の書籍を見ても、かなり本格的な内容であることが予想できますね。ニューラルネットワークって… 言葉は知っているけど、技術的にどうこう言われるとガクブルなので、勉強します。…

代表的な機械学習アルゴリズム4つの精度を不倫データで比較する。

変なタイトル…。 またも前回の続きですが、udemyで紹介される機械学習アルゴリズムは以下の4つ。 というより、多すぎて試しきれず、以下の4つに絞ったというか。 ロジスティック回帰 k近傍法 サポートベクトルマシン ナイーブベイズ分類 これらをデフォルトのまま使って予測精度を比較してみようかなと。 まずは不倫データを整えます。前回までの記事にコードのコピペです。 import pandas as pd import numpy as np from pandas import DataFrame, Series import statsmodels.api as sm def is_affairs(affairs): return 1 if affairs > 0 else 0 X = sm.datasets.fair.load_pandas().data Y = X.affairs.…

機械学習用データから分かる、不倫への明暗を分ける5つの要因。

興味本位で始めた、機械学習用不倫データセットと、Pythonの機械学習ライブラリscikit-learnを使って、愛妻の不倫を予測した前回の続き。(疑っているわけじゃないです) 結局、どのパラメータが不倫の大きな要因なのか? 不倫を避けるにはどうすればいいのか? と疑問に感じた人が調べるのは、係数(coefficient)です。 詳しい話はUdemyの実践 Python データサイエンスの講習やWikipediaを参照するとして、ざっくり言うと、「旦那の職業」「妻本人の職業」「子供の人数」・・・などの係数のうち、どれが目的変数(妻が不倫するかしないか)を決定するのに最も影響力を持つか、と解釈しました。 係数は、前回作ったロジスティック回帰modelに格納されているので、一目でわかるように可視化します。 from sklearn.linear_model import LogisticRegression from sklearn.cross_validation import train_test_split # トレーニング用データと確認用データを分離 X_train, X_test, Y_train, Y_test = train_test_split(X, Y,…

「不倫」データセットを機械学習して妻の説明変数パラメータを与えたところ、結果は…

結果はシロでした! 不倫しないそうです。(本人に結果報告したら「わかんないよ」と言われましたが…) まずは学習データをロードします。 import pandas as pd import numpy as np from pandas import DataFrame, Series import statsmodels.api as sm X = sm.datasets.fair.load_pandas().data 学習データに対する正解を作ります。 未知のデータ(妻パラメータ)に対する不倫するか(1)しないか(0)の結果を知りたいんですよね。 def is_affairs(affairs): return 1 if affairs > 0 else 0 Y = X.affairs.apply(…

Udemyデータサイエンス講座のロジスティック回帰テーマは「不倫」。

実践 Python データサイエンス、最後の方でscikit-learnを使って機械学習の基礎が学べます。これは面白い。 今やっとロジスティック回帰なんですが、ここに至るまでにこなしたのは株価解析や(これも面白かったけど)、アメリカ大統領選得票数の解析など、ちょっと堅いテーマが多かったのです。 それがロジスティック回帰にきて、テーマはなんと、「不倫」。 以下のようなデータセットを使ってLogisticRegressionモデルに食わせるわけですが、要するに以下のパラメータを与えれば、その人が不倫するかしないかの2値で予測結果が返っってくるというわけです。あくまで機械学習の学習用のテーマに過ぎないんですが…。 print(sm.datasets.fair.NOTE) :: Number of observations: 6366 Number of variables: 9 Variable name definitions: rate_marriage : How rate marriage, 1 = very poor, 2 = poor, 3 = fair, 4 = good, 5 = very good age : Age yrs_married…

OpenCV3 on Python3 on OSX 環境整備に思いのほか手間取った上、結局うまくいかない件。

Udemyのデータサイエンス講習がもうすぐ終わりそうなので、次の教材を探しました。 パラパラ見ていると、前から気になっていたOpenCVを使った画像処理レシピ発見。 画像認識で機械学習を使った解説が盛り込まれている模様。 ということで、まずはOpenCVをOSXにインストールしておこう… 今更Python2に戻りたくないからPython3で… なんて腰を上げたのが運の尽き。ハマるハマる。 OpenCVインストール手順 基本的に、こちらのブログで紹介されている手順でOKなはず。 Mac OS X で OpenCV 3 + Python 2/3 の開発環境を整備する方法 だったのに、自分の場合、Python環境にanyenvを使っているからか、こんなスマートにいきませんでした…。 OpenCVインストール手順(ハマり過程) まずはシステムにインストール済みのnumpyをアンインストール。 $ brew unlink numpy $ brew uninstall numpy python3で使うことを明示しつつ、numpyを再インストールして、ツール類を/usr/local下にリンクする。 $ pyenv global 3.5.1 $ brew install numpy --with-python3 $ brew link numpy と、ゴミが残っていたのか、…