人工知能してみる

人工知能の中の人が機械学習とか統計とかAI的なことを書き連ねます

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

前回に引き続き、主成分分析をしてから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なのかキレイに分割できました。
機械学習は強力な手法だと感じますね。