Pythonのscikit-learnによる分類をまとめました。
この記事は、scikit-learnのユーザーガイドを読みながら書きました。
https://scikit-learn.org/stable/user_guide.html
scikit-learnには様々な分類モデルがあります。
今回は、線形モデル、サポートベクターマシン、最近傍を用いた分類を行います。
分類にはirisデータセットを用います。
https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html
線形モデル
RidgeClassifier
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.RidgeClassifier.html
from sklearn.datasets import load_iris # irisデータセットのインポート
from sklearn.linear_model import RidgeClassifier # RidgeClassifierのインポート
X, y = load_iris(return_X_y=True) # dataをXに、targetをyに代入
model = RidgeClassifier().fit(X, y) # 学習
model.score(X, y) # スコアの出力
スコアは0.8533333333333334でした。
LogisticRegression
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression # LogisticRegressionのインポート
X, y = load_iris(return_X_y=True)
model = LogisticRegression().fit(X, y)
model.score(X, y)
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression # LogisticRegressionのインポート
X, y = load_iris(return_X_y=True)
model = LogisticRegression(max_iter=1000).fit(X, y)
model.score(X, y)
エラーが出たため、max_iter=1000を追加しました。
スコアは0.9733333333333334でした。
SGDClassifier
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDClassifier.html
from sklearn.datasets import load_iris
from sklearn.linear_model import SGDClassifier # SGDClassifierのインポート
X, y = load_iris(return_X_y=True)
model = SGDClassifier().fit(X, y)
model.score(X, y)
スコアは0.9466666666666667でした。
Perceptron
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Perceptron.html
from sklearn.datasets import load_iris
from sklearn.linear_model import Perceptron # Perceptronのインポート
X, y = load_iris(return_X_y=True)
model = Perceptron().fit(X, y)
model.score(X, y)
スコアは0.48でした。他の分類モデルと比べて低いです。
from sklearn.datasets import load_iris
from sklearn.linear_model import Perceptron # Perceptronのインポート
X, y = load_iris(return_X_y=True)
model = Perceptron(random_state=3).fit(X, y)
model.score(X, y)
random_state=3を追加すると、スコアが0.9666666666666667になりました。
PassiveAggressiveClassifier
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.PassiveAggressiveClassifier.html
from sklearn.datasets import load_iris
from sklearn.linear_model import PassiveAggressiveClassifier # PassiveAggressiveClassifierのインポート
X, y = load_iris(return_X_y=True)
model = PassiveAggressiveClassifier().fit(X, y)
model.score(X, y)
スコアは0.8133333333333334でした。
サポートベクターマシン
SVC
https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html
from sklearn.datasets import load_iris
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC # SVCのインポート
X, y = load_iris(return_X_y=True)
model = make_pipeline(StandardScaler(), SVC())
model.fit(X, y)
model.score(X, y)
スコアは0.9733333333333334でした。
NuSVC
https://scikit-learn.org/stable/modules/generated/sklearn.svm.NuSVC.html
from sklearn.datasets import load_iris
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import NuSVC # NuSVCのインポート
X, y = load_iris(return_X_y=True)
model = make_pipeline(StandardScaler(), NuSVC())
model.fit(X, y)
model.score(X, y)
スコアは0.9666666666666667でした。
LinearSVC
https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html
from sklearn.datasets import load_iris
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC # LinearSVCのインポート
X, y = load_iris(return_X_y=True)
model = make_pipeline(StandardScaler(), LinearSVC())
model.fit(X, y)
model.score(X, y)
スコアは0.9466666666666667でした。
最近傍
KNeighborsClassifier
https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier # KNeighborsClassifierのインポート
X, y = load_iris(return_X_y=True)
model = KNeighborsClassifier().fit(X, y)
model.score(X, y)
スコアは0.9666666666666667でした。
RadiusNeighborsClassifier
https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.RadiusNeighborsClassifier.html
from sklearn.datasets import load_iris
from sklearn.neighbors import RadiusNeighborsClassifier # RadiusNeighborsClassifierのインポート
X, y = load_iris(return_X_y=True)
model = RadiusNeighborsClassifier().fit(X, y)
model.score(X, y)
スコアは0.9733333333333334でした。
NearestCentroid
https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.NearestCentroid.html
from sklearn.datasets import load_iris
from sklearn.neighbors import NearestCentroid # NearestCentroidのインポート
X, y = load_iris(return_X_y=True)
model = NearestCentroid().fit(X, y)
model.score(X, y)
スコアは0.9266666666666666でした。
scikit-learnのユーザーガイドに載っているコード例が役に立ちました。
これらの分類モデルの説明をできるようになるために、もっと勉強していきたいと思います。