はじめに
連載「scikit-learnで学ぶ機械学習」を始めますに書いた通り、scikit-learnを用いて機械学習について学んで行きたいと思います。
前回の記事「データセット読み込みユーティリティ」では、scikit-learnのデータローダーについて学びました。
本記事のテーマは、「scikit-learnによる計算」です!
といってもこのテーマ名ではよく分かりませんね。
具体的には、増分学習
について学びます。
増分学習
partial_fit
を使うことで、与えたデータに対して1エポックの学習ができます。
- 学習データが次々と追加されていく
- 学習データの量が多く、一度にメモリに展開できない
といったシーンで役立ちます。
こういった学習を増分学習と言います。
コードの全体像
先に、完成後のソースコードを貼り付けておきます。
1 | from sklearn.linear_model import SGDClassifier |
データセットローダーのインポート
1 | from sklearn.linear_model import SGDClassifier |
SGD
学習を行う線形モデルをロードします。
のちに誤差関数をlog
に設定することで、
ロジスティック回帰をSGDで学習させることができます。
(from sklearn.linear_model import LogisticRegression
のロジスティック回帰実装ではSGDでの学習ができません。)
データセットの分割
1 | X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0) |
モデルのインスタンスを作成
1 | clf = SGDClassifier(loss='log') |
loss
をlog
に設定します。
他の誤差関数も使用可能で、hinge
とした場合は線形SVMとなります。
学習
1 | for i in range(1000): |
1000エポック学習させています。
partial_fit
はfit
と違い、classes
を引数に与える必要があります。(初回だけで十分ですが、コードを簡単にするため毎回与えています。)
評価
1 | print (clf.score(X_test, y_test)) |
まとめ
scikit-learnの増分学習の使い方がご理解いただけたでしょうか。
これにて、連載「scikit-learnで学ぶ機械学習」は終了です。
お疲れ様でした。
csvデータの学習方法を知りたい方は
CSVファイルをpandasで読み込み、scikit-learnで学習させる
もどうぞ。
機械学習の入門〜NumPyによるロジスティック回帰の実装を勉強したい方は
データ分析と機械学習の関係については以下の記事でまとめています。
記事情報
- 投稿日:2020年3月9日
- 最終更新日:2020年3月31日