scikit-learnでよく使う便利な機能まとめ

scikit-learnでよく使う便利な機能をまとめました。

train_test_split

データを学習データとテストデータに分離することができます。

1
2
3
4
5
6
7
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
breast_cancer = load_breast_cancer()
X = breast_cancer.data
y = breast_cancer.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

引数

  • test_size
    テストデータのサイズを指定します。引数としてintを与えると絶対数、floatを与えると比率と見なされます。同様にtrain_sizeを指定することもできます。

  • shuffle
    分割の前にデータの順番をランダムにシャッフルします。これはデータの順番に意味がある場合に、不適切な検証がなされることを防ぐための機能です。

  • random_state
    前述のshuffleのseed値です。

LogisticRegression

ロジスティック回帰モデルの学習や推論ができます。

1
2
3
4
5
6
7
8
9
10
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
breast_cancer = load_breast_cancer()
X = breast_cancer.data
y = breast_cancer.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
clf = LogisticRegression()
clf.fit(X_train, y_train)
clf.predict(X_test)

メソッド

  • fit
    学習します。
  • predict
    推論します。クラスラベルを返却します。
  • predict_proba
    推論します。クラスラベルごとに確率を返却します。

cross_val_score

交差検証(クロスバリデーション)を行い、そのスコアを返却します。

1
2
from sklearn.model_selection import cross_val_score
scores = cross_val_score(clf, X, y, cv=5, scoring='accuracy')

引数

  • cv
    分割数、cross validation generator、イテラブルを引数にとります。
  • scoring
    スコアリングの指標を指定します。詳細はこのページに記述があリマス。

plot_roc_curve

ROC曲線をプロットします。matplotlibのimportが必要です。

1
2
3
4
from sklearn.metrics import plot_roc_curve
import matplotlib.pyplot as plt
ax = plt.gca()
plot_roc_curve(clf, X_test, y_test, ax=ax)

StandardScaler

標準化を行います。標準化とは、平均を0に、分散を1に変換することです。

1
2
3
4
5
6
from sklearn import preprocessing
scaler = preprocessing.StandardScaler().fit(X_train)
X_train_scaled = scaler.transform(X_train)
X_test_scaled = scaler.transform(X_test)
clf = LogisticRegression()
clf.fit(X_train_scaled, y_train)

メソッド

  • fit
    平均と標準偏差を計算します。
  • transform
    fitで得られた統計量を用いて、標準化を行います。
  • fit_transform
    fittransformを同時に行います。

PCA

主成分分析を行います。

1
2
3
4
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca.fit_transform(X_train)
pca.fit(X_test)

メソッド

  • fit
    transformの準備をします。(分散共分散行列の特異値分解)
  • transform
    fitで得られた値を元に、次元削減を行います。
  • fit_transform
    fittransformを同時に行います。

属性

  • explained_variance_
    特異値
  • explained_variance_ratio_
    寄与率
  • pca.components_
    左特異ベクトル

accuracy

正解率を計算します。

1
2
from sklearn.metrics import accuracy_score
accuracy_score(y_test, clf.predict(X_test))

その他の指標

同様のインターフェイスで主要な指標は実装されています。

  • precision_score
  • recall_score
  • f1_score

上記のような複数の指標を確認したい際はclassification_reportが便利です。

1
2
from sklearn.metrics import classification_report
classification_report(y_test, clf.predict(X_test))

引数

  • sample_weight
    スコアに重み付けをすることができます。

終わりに

これらの機能を実践的に利用した記事がありますので併せてご覧ください。

記事情報

  • 投稿日:2020年5月24日
  • 最終更新日:2020年5月24日