科学の箱

科学・IT・登山の話題

機械学習

irisでPCAを実行し可視化

投稿日:

irisデータをPCAで2次元に分類して可視化してみる。

内容

  • 準備及びデータの前処理
  • PCA
  • プロット

 

準備及びデータの前処理

irisデータを読み込み、PCAを実行するための前処理をする。ここの詳細については、

irisデータについて簡単な機械学習をしてみる

を参照

from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
import numpy as np

# データセット読み込み
iris = sns.load_dataset('iris')

# データ前処理
X_iris = iris.drop('species', axis=1)

 

PCA

PCAはsklearn.decomposition.PCAを用いる。

class sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False, svd_solver=’auto’, tol=0.0, iterated_power=’auto’, random_state=None)
n_components PCAの主成分の数
# PCA
pca = PCA(n_components=2)     
pca.fit(X_iris)               
pca_transformed = pca.transform(X_iris)

 

プロット

PCAで算出した主成分1および2の値はpca_transformedに格納されている。

print(pca_transformed)

# [[-2.68412563  0.31939725]
 [-2.71414169 -0.17700123]
 [-2.88899057 -0.14494943]
 [-2.74534286 -0.31829898]
 [-2.72871654  0.32675451]

 

プロットするためにこの値をirisデータにマージする。

# データマージ
iris["PCA1"] = pca_transformed[:, 0]
iris["PCA2"] = pca_transformed[:, 1]

 

プロットするにあたり種別で色を指定したいために、種別と色を設定した配列を作成する。

# プロット
species = y_test.unique()
print(species) #['setosa' 'versicolor' 'virginica']
colors = ['navy', 'turquoise', 'darkorange']

 

このデータを種別に読み込みながらプロットする。

for color,label in zip(colors, species):
        plt.scatter(iris[iris["species"]==label]["PCA1"],iris[iris["species"]=="setosa"]["PCA2"], color=color, label=label)
plt.title("PCA for IRIS")
plt.legend(loc="best")

 

 

メタ情報

inarticle



メタ情報

inarticle



-機械学習
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

ポワソン分布の利用

一時間に平均7通のメールが来るとき100回試行した時のメール受信件数を調べる > rpois(100,7)  [1]  7 10  2  8  5  4  4  9  2  3  9  6  9 …

no image

Excelによる単回帰分析

エクセルでの単回帰分析をについて手順をまとめる。エクセルの使い方にあわせて分析結果の解釈の仕方も書いておく。 データは勉強時間に対する点数とする。これは作ったデータであるが、線形回帰にフィットするよう …

no image

Core Concept in Data Analysis – Week 5

予測の分析 関連性を分析する モデルを明らかにする。 パラメータを推測する。 テストする。 予測が将来になると難しい→環境が変わってしまうため。 correlation structure (質的尺度 …

no image

ジニ係数(再掲)

ジニ係数について修正した。とりあえずコード。 revenue<-read.csv(file=”data.csv”, head=TRUE) revenue$TotalRevenues_n < …

no image

独立性の検定 2つ

ニートの年齢別割合が1996年と2012年で関連性があるか独立性の検定をしてみる。 ニートの割合  1996 2012 15~19歳 9 9 20~24歳 12 17 25~29歳 10 18 30~ …

2019年9月
« 8月   10月 »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

side bar top



アーカイブ

カテゴリー