Scikit-learnで機械学習(ランダムフォレストで分類する方法)

Scikit-learnで機械学習(ランダムフォレストで分類する方法)

scikit-learnのRandomForest(ランダムフォレスト)を使った分類方法です。データはIrisを利用しています。

前々回:Scikit-learnで機械学習(決定木で分類する方法)
前回:Scikit-learnで機械学習(SVMで分類する方法)

RandomForest(ランダムフォレスト)を使ったIrisデータの分類方法


Irisデータ

scikit-learnに付属のIris(アヤメの計測データ)を利用しています。

Irisデータは『setosa』、『versicolor』、『virginica』という3種類の品種のアヤメの”がく片 (Sepal)”と”花弁 (Petal)” の幅および長さを150点計測したデータです。

sepal length(cm)がく片の長さ
sepal width(cm)がく片の幅
petal length(cm)花弁の長さ
petal width(cm)花弁の幅



RandomForestでIrisデータを識別

ランダムフォレストはモデルにRandomForestClassifierを指定します。

In [1]:
from sklearn import datasets, model_selection , metrics
from sklearn.ensemble import RandomForestClassifier

# irisデータ読み込み
iris = datasets.load_iris()

# 訓練用とテスト用データに分割
X_train, X_test, label_train, label_test = model_selection.train_test_split(
    iris.data, iris.target, test_size=0.3, random_state=0)

# 訓練データで学習
clf = RandomForestClassifier(random_state=0) # 分類器RandomForest
clf.fit(X_train, label_train) # 学習

# テストデータで予測
pre = clf.predict(X_test)

# 予測結果の正解率
ac_score = metrics.accuracy_score(label_test, pre)
print('正解率{0:.1f}%'.format(ac_score * 100))
正解率97.8%

がく片、花びらの長さで正解分類をプロット(全データ, n=150)


がく片、花びらの長さで学習結果をプロット(訓練データ70%, n=105)


がく片、花びらの長さで予測結果をプロット(テストデータ30%, n=45)


赤い点は正解ラベルど不一致のデータです。



スポンサーリンク

0 件のコメント :

コメントを投稿