Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
scikit-learnで始める機械学習
2013/7/16@はじパタLT
理論を勉強したら、やっぱり実践したい
理想
0から自分で実装したプログラムで課題を解決していく
現実
パッケージをつなぎ合わせて問題に取り組む
汎用性や処理速度を気にすると、パッケージを使うのが
現実的
→パッケージを使った機械学習の方法...
twitterID:wwacky
6月末で会社を辞めて無職生活中
8月からまたサラリーマンになります
最近Python、Hadoopを勉強中
今まではJava、Rがメイン
ゲーム・登山をやってます
登山はまだにわかですが
自己紹介
機械学習のパッケージ
R勢
 e1071(SVM、クラスタリングとか)
 gbm(AdaBoost+回帰など)
 kernlab(SVM、カーネル主成分とか)
 mboost(boosting)
 nnet(ニューラルネットワーク)
...
機械学習のパッケージ
R勢
 e1071(SVM、クラスタリングとか)
 gbm(AdaBoost+回帰など)
 kernlab(SVM、カーネル主成分とか)
 mboost(boosting)
 nnet(ニューラルネットワーク)
...
python用の機械学習ライブラリ(モジュール)
シンプルかつ効率的な多目的ツール(らしい)
pythonでデータ分析をする人の必須ツール(って聞いた)
ということで、気になってたので使ってみた
scikit-learnって何?
教師なし学習
 混合ガウスモデル
 主成分分析(9章)
 因子分析
 独立成分分析
 クラスタリング(10章)
 隠れマルコフモデル
etc.
教師あり学習
 最近傍法(5章)
 一般化線形モデル(6章)
 線形判別分析(6章...
教師なし学習
 混合ガウスモデル
 主成分分析(9章)
 因子分析
 独立成分分析
 クラスタリング(10章)
 隠れマルコフモデル
etc.
教師あり学習
 最近傍法(5章)
 一般化線形モデル(6章)
 線形判別分析(6章...
Webで検索してください(汗
まあ、そんなに説明することもないかと
Windows版
インストーラをダウンロードして実行するだけ
Mac版
MacPortsだとデフォルトでインストールされているPythonにイ
ンストールされるみた...
何はともあれデータセットがないと始まらない
データを準備する
Kaggleにscikit-learnのコンペがあったので、ここからデータをもらうことに
ここから
Download
ページに行ける
データの中身
0.29940251144353242,-1.2266241875260637,・・・
-1.1741758544222554,0.33215734209952552,・・・
1.1922220828945145,-0.41437...
Rと同じぐらいのコード量で動かせる
とりあえず動かす
import numpy as np
from sklearn import svm
trainFeature = np.genfromtxt(open(train.csv', 'r'),...
Rと同じぐらいのコード量で動かせる
とりあえず動かす
import numpy as np
from sklearn import svm
trainFeature = np.genfromtxt(open(train.csv', 'r'),...
Rと同じぐらいのコード量で動かせる
とりあえず動かす
import numpy as np
from sklearn import svm
trainFeature = np.genfromtxt(open(train.csv', 'r'),...
Rと同じぐらいのコード量で動かせる
とりあえず動かす
import numpy as np
from sklearn import svm
trainFeature = np.genfromtxt(open(train.csv', 'r'),...
Rと同じぐらいのコード量で動かせる
とりあえず動かす
import numpy as np
from sklearn import svm
trainFeature = np.genfromtxt(open(train.csv', 'r'),...
モデルを変える時は、定義部分を変更するだけ。後は一緒。
全モデル同じ方法かは調べてませんが・・・。
scikit-learnのいいところ①
from sklearn import svm
:
clf = svm.SVC()
clf.fit(...
クロスバリデーション、パラメータのグリッドサーチも簡単
scikit-learnのいいところ②
from sklearn import cross_validation
clf = svm.SVC()
scores = cross_valida...
0:00:00
0:01:26
0:02:53
0:04:19
0:05:46
0:07:12
0:08:38
指定なし 1 2 3 4 -1
処理時間[hh:mm:ss]
n_jobs
n_jobsを指定するだけで並列計算できるようになる
...
Kaggleにsubmitしてみた
∧,,∧
(;´・ω ・) うーん・・・ まだまだ修行が必要
/ ∽ /
しー-J
ひみつ
Nächste SlideShare
Wird geladen in …5
×

2013.07.15 はじパタlt scikit-learnで始める機械学習

22.620 Aufrufe

Veröffentlicht am

はじめてのパターン認識の輪読会LTにて

  • Yes you are right. There are many research paper writing services available now. But almost services are fake and illegal. Only a genuine service will treat their customer with quality research papers. ⇒ www.WritePaper.info ⇐
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/2F7hN3u ♥♥♥
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Sex in your area is here: ❤❤❤ http://bit.ly/2F7hN3u ❤❤❤
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

2013.07.15 はじパタlt scikit-learnで始める機械学習

  1. 1. scikit-learnで始める機械学習 2013/7/16@はじパタLT
  2. 2. 理論を勉強したら、やっぱり実践したい 理想 0から自分で実装したプログラムで課題を解決していく 現実 パッケージをつなぎ合わせて問題に取り組む 汎用性や処理速度を気にすると、パッケージを使うのが 現実的 →パッケージを使った機械学習の方法を紹介 何の話?
  3. 3. twitterID:wwacky 6月末で会社を辞めて無職生活中 8月からまたサラリーマンになります 最近Python、Hadoopを勉強中 今まではJava、Rがメイン ゲーム・登山をやってます 登山はまだにわかですが 自己紹介
  4. 4. 機械学習のパッケージ R勢  e1071(SVM、クラスタリングとか)  gbm(AdaBoost+回帰など)  kernlab(SVM、カーネル主成分とか)  mboost(boosting)  nnet(ニューラルネットワーク)  randomForest  rpart etc. 定番  LIBSVM その他  weka (Java)  nltk (Python) 新興勢力  Apache Mahout  Jubatus  scikit-learn という勝手な印象
  5. 5. 機械学習のパッケージ R勢  e1071(SVM、クラスタリングとか)  gbm(AdaBoost+回帰など)  kernlab(SVM、カーネル主成分とか)  mboost(boosting)  nnet(ニューラルネットワーク)  randomForest  rpart etc. 定番  LIBSVM その他  weka (Java)  nltk (Python) 新興勢力  Apache Mahout  Jubatus  scikit-learn という勝手な印象 今日話すのはこいつ
  6. 6. python用の機械学習ライブラリ(モジュール) シンプルかつ効率的な多目的ツール(らしい) pythonでデータ分析をする人の必須ツール(って聞いた) ということで、気になってたので使ってみた scikit-learnって何?
  7. 7. 教師なし学習  混合ガウスモデル  主成分分析(9章)  因子分析  独立成分分析  クラスタリング(10章)  隠れマルコフモデル etc. 教師あり学習  最近傍法(5章)  一般化線形モデル(6章)  線形判別分析(6章)  SVM(8章)  決定木(11章)  ランダムフォレスト(11章)  Naïve Bayes etc. scikit-learnで何ができるの(抜粋) 周辺ツール  特徴抽出・作成  クロスバリデーション(2章)  グリッドサーチ  AUC、ROC描画(3章)  Accuracy、Recall、F値算出(3章) ()内の章は、はじめてのパターン認識で登場する章
  8. 8. 教師なし学習  混合ガウスモデル  主成分分析(9章)  因子分析  独立成分分析  クラスタリング(10章)  隠れマルコフモデル etc. 教師あり学習  最近傍法(5章)  一般化線形モデル(6章)  線形判別分析(6章)  SVM(8章)  決定木(11章)  ランダムフォレスト(11章)  Naïve Bayes etc. scikit-learnで何ができるの(抜粋) 周辺ツール  特徴抽出・作成  クロスバリデーション(2章)  グリッドサーチ  AUC、ROC描画(3章)  Accuracy、Recall、F値算出(3章) ()内の章は、はじめてのパターン認識で登場する章
  9. 9. Webで検索してください(汗 まあ、そんなに説明することもないかと Windows版 インストーラをダウンロードして実行するだけ Mac版 MacPortsだとデフォルトでインストールされているPythonにイ ンストールされるみたい 別にPythonをインストールしているならeasy_installかpipの方 がいいと思う インストールするには?
  10. 10. 何はともあれデータセットがないと始まらない データを準備する Kaggleにscikit-learnのコンペがあったので、ここからデータをもらうことに ここから Download ページに行ける
  11. 11. データの中身 0.29940251144353242,-1.2266241875260637,・・・ -1.1741758544222554,0.33215734209952552,・・・ 1.1922220828945145,-0.41437073477092423,・・・ 1.573270119628208,-0.58031780024933788,・・・ -0.61307141665395515,-0.64420413382117836,・・・ : 1 0 0 1 0 : ラベル 1000サンプル 特徴量 1000サンプル×40変数 Kaggleにデータの説明がないのが残念(本当は背景情報も欲しいところ) 1000行 40変数
  12. 12. Rと同じぐらいのコード量で動かせる とりあえず動かす import numpy as np from sklearn import svm trainFeature = np.genfromtxt(open(train.csv', 'r'), delimiter = ',') trainLabel = np.genfromtxt(open(trainLabels.csv', 'r'), delimiter = ',') clf = svm.SVC(kernel='rbf', C=1) clf.fit(trainFeature, trainLabel) testFeature = np.genfromtxt(open('test.csv', 'r'), delimiter = ',') result = clf.predict(testFeature)
  13. 13. Rと同じぐらいのコード量で動かせる とりあえず動かす import numpy as np from sklearn import svm trainFeature = np.genfromtxt(open(train.csv', 'r'), delimiter = ',') trainLabel = np.genfromtxt(open(trainLabels.csv', 'r'), delimiter = ',') clf = svm.SVC(kernel='rbf', C=1) clf.fit(trainFeature, trainLabel) testFeature = np.genfromtxt(open('test.csv', 'r'), delimiter = ',') result = clf.predict(testFeature) ライブラリの読み込み
  14. 14. Rと同じぐらいのコード量で動かせる とりあえず動かす import numpy as np from sklearn import svm trainFeature = np.genfromtxt(open(train.csv', 'r'), delimiter = ',') trainLabel = np.genfromtxt(open(trainLabels.csv', 'r'), delimiter = ',') clf = svm.SVC(kernel='rbf', C=1) clf.fit(trainFeature, trainLabel) testFeature = np.genfromtxt(open('test.csv', 'r'), delimiter = ',') result = clf.predict(testFeature) ファイルからデータを読み込む。 numpyのデータ形式に変換。
  15. 15. Rと同じぐらいのコード量で動かせる とりあえず動かす import numpy as np from sklearn import svm trainFeature = np.genfromtxt(open(train.csv', 'r'), delimiter = ',') trainLabel = np.genfromtxt(open(trainLabels.csv', 'r'), delimiter = ',') clf = svm.SVC(kernel='rbf', C=1) clf.fit(trainFeature, trainLabel) testFeature = np.genfromtxt(open('test.csv', 'r'), delimiter = ',') result = clf.predict(testFeature) モデルを定義(ここではSupport Vector Classifier) fit関数を使って教師データからパラメータを推定
  16. 16. Rと同じぐらいのコード量で動かせる とりあえず動かす import numpy as np from sklearn import svm trainFeature = np.genfromtxt(open(train.csv', 'r'), delimiter = ',') trainLabel = np.genfromtxt(open(trainLabels.csv', 'r'), delimiter = ',') clf = svm.SVC(kernel='rbf', C=1) clf.fit(trainFeature, trainLabel) testFeature = np.genfromtxt(open('test.csv', 'r'), delimiter = ',') result = clf.predict(testFeature) 判別したいデータの特徴量を読み込んで、 predict関数を使って判別
  17. 17. モデルを変える時は、定義部分を変更するだけ。後は一緒。 全モデル同じ方法かは調べてませんが・・・。 scikit-learnのいいところ① from sklearn import svm : clf = svm.SVC() clf.fit(trainFeature, trainLabel) : from sklearn import neighbors : clf = neighbors.KNeighborsClassifier() clf.fit(trainFeature, trainLabel) : from sklearn.ensemble import RandomForestClassifier : clf = RandomForestClassifier() clf.fit(trainFeature, trainLabel) : SVMの時 k近傍法の時 RandomForestの時 まあ、パラメータは把握した方がいいですが
  18. 18. クロスバリデーション、パラメータのグリッドサーチも簡単 scikit-learnのいいところ② from sklearn import cross_validation clf = svm.SVC() scores = cross_validation.cross_val_score(clf, trainFeature, trainLabel, cv=5, n_jobs=-1) print scores #結果表示 from sklearn.grid_search import GridSearchCV tuned_parameters = [ #グリッドサーチの探索範囲設定 {'C': [1, 10, 100, 1000], 'kernel': ['linear']}, {'C': [1, 10, 100, 1000], 'gamma': [0.001, 0.0001], 'kernel': ['rbf']}, ] clf = GridSearchCV(svm.SVC(C=1), tuned_parameters, n_jobs = -1) #設定 clf.fit(trainFeature, trainLabel, cv=5) #グリッドサーチに使うデータの入力 print clf.best_estimator_ #パラメータが一番よかったモデルを表示 パラメータのグリッドサーチ クロスバリデーション クロスバリデーション、グリッドサーチは特徴量とラベルをnumpyの配列にしておかないとエラーになるので注意
  19. 19. 0:00:00 0:01:26 0:02:53 0:04:19 0:05:46 0:07:12 0:08:38 指定なし 1 2 3 4 -1 処理時間[hh:mm:ss] n_jobs n_jobsを指定するだけで並列計算できるようになる クロスバリデーション、グリッドサーチ以外にもランダムフォレ ストにも使える優れもの -1だとPCのコア数が自動設定される 並列計算も簡単、そうscikit-learnならね 4コアのMac Book Proで計測
  20. 20. Kaggleにsubmitしてみた ∧,,∧ (;´・ω ・) うーん・・・ まだまだ修行が必要 / ∽ / しー-J ひみつ

×