0
0

Pythonのscikit-learnによる分類まとめ

Last updated at Posted at 2023-10-07

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のユーザーガイドに載っているコード例が役に立ちました。
これらの分類モデルの説明をできるようになるために、もっと勉強していきたいと思います。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0