プログラミング備忘録

初級プログラマ。python、DL勉強中

SVMについてのメモ

SVM

参考

scikit-learnのSVMでirisデータセットを分類 | / note.nkmk.me

scikit-learnのSVMでMNISTの手書き数字データを分類 | / note.nkmk.me

カーネル法

参考

scikit-learnで線形モデルとカーネルモデルの回帰分析をやってみた - イラストで学ぶ機会学習

MNISTの分類問題

from matplotlib import pyplot as plt
from sklearn.datasets import fetch_mldata
from sklearn import svm,metrics,model_selection

mnist = fetch_mldata('MNIST original', data_home='data/src/download/')

print(type(mnist))
print(mnist.keys())

mnist_label=mnist["target"]
mnist_data=mnist["data"]/255

print(mnist_data.shape)
print(mnist_label.shape)

train_size = 30000
test_size = 1000
data_train, data_test, label_train, label_test = \
                 model_selection.train_test_split \
     (mnist_data, mnist_label,test_size=test_size, train_size=train_size)


clf = svm.SVC()
clf.fit(data_train, label_train)
pre = clf.predict(data_test)

ac_score = metrics.accuracy_score(label_test, pre)
print(ac_score)

Irisの分類問題

from matplotlib import pyplot as plt
from sklearn.datasets import load_iris
from sklearn import svm,metrics,model_selection

import numpy as np
import pandas as pd

iris=load_iris()
iris_data=pd.DataFrame(iris["data"],columns=iris["feature_names"])
print(iris_data.head(5))
iris_label = pd.Series(data=iris["target"])
print(iris_label.head(5))

data_train, data_test, label_train, label_test = \
                 model_selection.train_test_split(iris_data, iris_label)
    
print(data_train.head(5))
print()
print(label_train.head(5))
print()
print(len(data_train), len(data_test))

clf = svm.SVC()
clf.fit(data_train, label_train)
pre = clf.predict(data_test)
ac_score = metrics.accuracy_score(label_test, pre)
print(ac_score)