読者です 読者をやめる 読者になる 読者になる

データサイエンスしてみる

新米エンジニアがデータサイエンスを勉強する。機械学習とかRとかPythonとか

主成分分析したあとSVMを回してみる

Python 機械学習

前回に引き続き、主成分分析をしてからSVMを回してみます。
主成分分析とSVMは話したので過去の記事を参照してください。

grahamian.hatenablog.com

grahamian.hatenablog.com

それでは早速SVMを回してみましょう。
コードは主成分分析も含めてこんな感じです。
データセットはirisを使用。

import sklearn
import pylab
from sklearn.decomposition import PCA
from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn.cross_validation import train_test_split
from sklearn.svm import LinearSVC

iris = datasets.load_iris()
x = iris.data
y = iris.target

pca = PCA(n_components = 2)
pca.fit(x)
x_pca=pca.transform(x)

data_train, data_test, label_train, label_test = train_test_split(x_pca, y)

estimator = LinearSVC(C=1.0)
estimator.fit(data_train,label_train)
label_predict = estimator.predict(data_test)

from sklearn.metrics import confusion_matrix
confusion_matrix(label_test, label_predict)

結果は次が得られます。

array([[17,  0,  0],
       [ 0,  9,  2],
       [ 0,  0, 10]])

まあ、ほぼ正解って感じですね。
ちなみに元のデータを使っても正答率はほぼ同様です。

前回の散布図を見ると2クラスターの分離が難しそうでしたが、さすがSVMなのかキレイに分割できました。
機械学習は強力な手法だと感じますね。