より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

ワインの種類にベイズ分析とLDAを試す

機械学習にも流儀(?)や哲学(?)があるようです。

ベイズ分類、勉強しましょう!

と後輩に言われたので勉強することにしました。

www.sogensha.co.jp

上記の本を読んだのですが、ワインのデータセットが紹介されていたので実際に、チャレンジしてみることにしました。

オープンデータセット(Open Data Sets) - データサイエンス

import pandas as pd
df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data', header=None)

qiita.com

上記の記事を参考にさせていただきました。

f:id:rimever:20190225215823p:plain

ふむ、でも、精度に目が行ってしまいますね。

具体的な方法は思い出せなかったので上記の記事を参考に次元圧縮して二次元化して、華を添えたいと思います。

PCAもありますが、今回は書籍「ベイズ統計学」で紹介されていたLDAを試してみます。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import preprocessing, decomposition
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
 
df_wine_all=pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data', header=None)
X=df_wine_all.iloc[:,1:].values
Y=df_wine_all.iloc[:,0].values
 
sc=preprocessing.StandardScaler()
sc.fit(X)
X=sc.transform(X)
 
lda = LDA(n_components=2)

X_transformed = lda.fit_transform(X,y)

%matplotlib inline
 
plt.figure(figsize=(10,10))
plt.scatter(X_transformed[:,0],X_transformed[:,1], c=Y)
plt.xlabel('LD1')
plt.ylabel('LD2')

PCA 主成分分析(次元圧縮)【Pythonとscikit-learnで機械学習:第21回】をベースに実装させていただきました。

f:id:rimever:20190225231640p:plain

実行結果は、実行する度に異なるようです。