
Yamu
今回はフィッシャーの
アヤメデータセットから
層別散布図を作成し
特徴を分析します
[PR]※本サイトには、プロモーションが含まれています

層別散布図とは ?
層別散布図とは、散布図の一種
データポイントを特定のカテゴリや層を選択して
異なるグループ間の関係や
パターンを視覚的に示す図です
今回はアヤメの分類の分析に層別散布図を利用して
特徴量を抽出しようと思います

フィッシャーのアヤメデータセット
統計学者又、生物学者であるロナルド・フィッシャー
によって収集された有名なデータです
各花の種類について、以下のように構成されています
列名 | 列名の意味 |
sepal length(cm) | がく片の長さ |
sepal width(cm) | がく片の幅 |
petal length(cm) | 花弁の長さ |
petal width(cm) | 花弁の幅 |
Species | 花の種類(setosa, versicolor, virginica) |
3種類のアヤメ

データセットの項目の測定箇所


Yamu
このデータは
3種のアヤメの特徴を
示しているんですね!
下記コードで
irisのデータセットを取得
してください
import pandas as pd
from sklearn.datasets import load_iris
# Irisデータセットをロード
iris = load_iris()
# データをpandasのDataFrameに変換
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
# target列を数値から種の名前に変換
species = [iris.target_names[i] for i in iris.target]
iris_df['Species'] = species
# CSVファイルに保存
csv_file_path = 'iris_dataset_with_species.csv'
iris_df.to_csv(csv_file_path, index=False)
print(f"Irisデータセットを {csv_file_path} に保存しました。")
層別散布図をpythonで実装する
花の種類で色分けされた
がく片の長さと幅の散布図
花弁の長さと花弁の幅の散布図
がく片の長さと花弁の長さの散布図
がく片の幅と花弁の幅の散布図
を書きます
がく片の長さと幅

花弁の長さと花弁の幅

がく片の長さと花弁の長さ

がく片の幅と花弁の幅


Yamu
どの散布図を見ても
特徴が異なることが
散布図から分かりますね!
特に花弁の長さと花弁の幅
でデータが綺麗に分かれているので
この散布図を利用すれば
花の種類の判別が出来そうです!
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# データの読み込み gruopをインデックスにする
df = pd.read_csv("iris_dataset_with_species.csv", index_col='Species')
print(df.head(2))
# インデックスごとに層別された散布図のプロット
sns.scatterplot(data=df, x='sepal length (cm)', y='sepal width (cm)', hue=df.index)
plt.xlabel('sepal length(cm)')
plt.ylabel('sepal width(cm)')
plt.title("correlation sepal length and sepal width")
plt.legend(title='Group', loc='upper right')
plt.grid(True)
# プロットを保存
plt.savefig('scatter_plot.png')
# プロットを表示
plt.show()