mlxtendの可視化

目次

1. mlxtendの可視化
1.1 主成分分析(PCA Correlation)
1.2 主成分分析の可視化モジュール
2. 実験
2.1 環境構築
2.2 データセット
2.3 主成分分析(PCA Correlation)
2.4 学習曲線(Learning Curve)
2.5 混同行列(Confusion Matrix)
2.6 決定境界(Decision Regions)
2.7 線形回帰(Linear Regression)

関連記事:

MLXTENDのでのアソシエーション分析

可視化

1. mlxtendの可視化

Mlxtendは machine learning extensionsの英語略称で、データ分析で発生する作業のライブラリです。サンプルデータ、前処理、モデル作成、モデル評価、可視化などのモジュールを提供しています。今回は可視化のモジュールを解説したいと思います。

 

Mlxtendの可視化モジュール:http://rasbt.github.io/mlxtend/user_guide/plotting/plot_linear_regression/

Mlxtendのgithub:https://github.com/rasbt/mlxtend

 

1.2 主成分分析の可視化モジュール

– 主成分分析(PCA Correlation)

主成分分析は多数変数の相関係数を計算します。

Mlxtendではplot_pca_correlation_graphの関数を利用します。

 

– 学習曲線(Learning Curve)

学習曲線は横軸に試行回数や時間経過を元にした累積経験数、学習と訓練の結果を表示します。

Mlxtendではplot_learning_curvesの関数を利用します。

 

– 混同行列(Confusion Matrix)

混同行列は2 値分類問題で正解・不正解の結果をまとめたマトリックスで表します。Mlxtendではplot_confusion_matrixの関数を利用します。

 

– 決定境界(Decision Regions)

決定境界はデータの分類予測を行う際に予測の基準となる境界線のことです。

Mlxtendではplot_decision_regionsの関数を利用します。

 

– 回帰直線(Linear Regression Line)

回帰直線は散布図で直線的な傾向が見て取れる2つの変数の直相関係数を表します。

Mlxtendではplot_linear_regressionの関数を利用します。

 

2. 実験

2.1 環境構築(Google colab)

Mlxtendをアップグレードします。

!pip install mlxtend –upgrade

 

Mlxtendのバージョンを確認します。

import mlxtend

print(mlxtend.__version__)

0.19.0

 

2.2 データセット

Irisのデータセットを読み込みます。学習と訓練のデータセットを分けます。

from mlxtend.plotting import plot_learning_curves

import matplotlib.pyplot as plt

from sklearn import datasets

 

from mlxtend.preprocessing import shuffle_arrays_unison

from sklearn.neighbors import KNeighborsClassifier

import numpy as np

 

iris = datasets.load_iris()

X = iris.data

y = iris.target

 

feature_names = iris.feature_names

class_names = iris.target_names

 

X, y = shuffle_arrays_unison(arrays=[X, y], random_seed=123)

X_train, X_test = X[:120], X[120:]

y_train, y_test = y[:120], y[120:]

 

 

2.3 主成分分析(PCA Correlation)

主成分分析のチャットを作成します。Sapal widthの特徴量は別の特徴量を外れています。

from mlxtend.plotting import plot_pca_correlation_graph

 

X_norm = X / X.std(axis=0) # Normalizing the feature columns

 

figure, correlation_matrix = plot_pca_correlation_graph(X_norm,

feature_names,

dimensions=(1, 2),

figure_axis_size=7)

 

2.4 学習曲線(Learning Curve)

SVCの分類分析を学習して、学習曲線を作成します。

# Plot plot_learning_curves

 

from sklearn.svm import SVC

 

# Training a classifier

svm = SVC(C=0.5, kernel=’linear’)

svm.fit(X, y)

 

# Plot

plot_learning_curves(X_train, y_train,

X_test, y_test,

svm,

train_marker  = ‘o’,

test_marker = ‘^’,

style = ‘seaborn’, # https://matplotlib.org/stable/gallery/style_sheets/style_sheets_reference.html

scoring  = ‘misclassification error’

)

plt.show()

 

2.5 混同行列(Confusion Matrix)

サイズ、色テーマ、クラス名などを設定して、混同行列を作成します。

 

from sklearn.metrics import confusion_matrix

from mlxtend.plotting import plot_confusion_matrix

import matplotlib.pyplot as plt

import numpy as np

 

y_true = y_test

y_pred = svm.predict(X_test)

 

confusion_matrix_array = confusion_matrix(y_true, y_pred)

 

fig, ax = plot_confusion_matrix(conf_mat=confusion_matrix_array,

figsize=(7, 7),

show_absolute=True,

show_normed=True,

colorbar=True,

cmap=’Accent’,  # https://matplotlib.org/stable/tutorials/colors/colormaps.html

class_names = class_names,

)

 

plt.show()

2.6 決定境界(Decision Regions)

SVCの分類分析を作成して、sepal lengthとpetal length の決定境界を作成します。

from mlxtend.plotting import plot_decision_regions

from sklearn.svm import SVC

 

X = iris.data[:, [0, 2]]

 

# Training a classifier

svm = SVC(C=0.5, kernel=’linear’)

svm.fit(X, y)

 

# Plotting decision regions

plot_decision_regions(X, y, clf=svm, legend=2)

 

# Adding axes annotations

plt.xlabel(‘sepal length [cm]’)

plt.ylabel(‘petal length [cm]’)

plt.title(‘SVM on Iris’)

plt.show()

2.7 線形回帰(Linear Regression)

X,yのデータセットを作成します。作成したデータで線形回帰の図を作成します。

import matplotlib.pyplot as plt

from mlxtend.plotting import plot_linear_regression

import numpy as np

 

X = np.array([4, 8, 13, 26, 31, 10, 8, 30, 18, 12, 20, 5, 28, 18, 6, 31, 12,

12, 27, 11, 6, 14, 25, 7, 13,4, 15, 21, 15])

 

y = np.array([14, 24, 22, 59, 66, 25, 18, 60, 39, 32, 53, 18, 55, 41, 28, 61, 35,

36, 52, 23, 19, 25, 73, 16, 32, 14, 31, 43, 34])

 

intercept, slope, corr_coeff = plot_linear_regression(X, y)

plt.show()

担当者:HM

香川県高松市出身 データ分析にて、博士(理学)を取得後、自動車メーカー会社にてデータ分析に関わる。その後コンサルティングファームでデータ分析プロジェクトを歴任後独立 気が付けばデータ分析プロジェクトだけで50以上担当

理化学研究所にて研究員を拝命中 応用数理学会所属