著者:飯尾 淳
本連載では「Pythonを昔から使っているものの、それほど使いこなしてはいない」という筆者が、いろいろな日常業務をPythonで処理することで、立派な「蛇使い」に育つことを目指します。その過程を温かく見守ってください。皆さんと共に勉強していきましょう。第23回では、機械学習ライブラリ「scikit-learn」で何ができるのかを紹介した上で、データを二つのクラスに分類するPythonプログラムを作成します。
シェルスクリプトマガジン Vol.93は以下のリンク先でご購入できます。
図9 テストデータを作成するPythonコード
1 2 3 4 5 6 7 8 9 10 11 12 |
import pandas as pd from sklearn.datasets import make_classification (data, label) = make_classification(n_samples=1000, n_features=2, n_classes=2, n_informative=2, n_redundant=0, random_state=133) df = pd.DataFrame({'x1':[d[0] for d in data], 'x2':[d[1] for d in data], 'label':label}) df.plot.scatter(x='x1', y='x2', c=df['label'].map({0:'blue', 1:'red'}), s=5) |
図10 LinearSVCを用いて学習と分類をするPythonコード
1 2 3 4 5 |
from sklearn.svm import LinearSVC from sklearn.metrics import accuracy_score clf = LinearSVC(random_state=0, dual='auto', tol=1e-5) clf.fit(data, label) accuracy_score(clf.predict(data), label) |
図11 分離面を描画するPythonコード
1 2 |
from mlxtend.plotting import plot_decision_regions plot_decision_regions(data, label, clf=clf) |
図13 NuSVCを用いて学習と分類をするPythonコード
1 2 3 4 |
from sklearn.svm import NuSVC clf = NuSVC(nu=0.1, random_state=0) clf.fit(data, label) accuracy_score(clf.predict(data), label) |
図15 SVCを用いて学習と分類をするPythonコード(その1)
1 2 3 4 |
from sklearn.svm import SVC clf = SVC(gamma=0.1, random_state=0) clf.fit(data, label) accuracy_score(clf.predict(data), label) |
図17 SVCを用いて学習と分類をするPythonコード(その2)
1 2 3 4 |
from sklearn.svm import SVC clf = SVC(gamma=0.1, random_state=0) clf.fit(data, label) accuracy_score(clf.predict(data), label) |