【seaborn】サンプルデータを取得する方法
seabornから機械学習の練習やテストに使えるサンプルデータを取得できる。
sklearnからもサンプルデータを取得できるが、sklearnのサンプルデータは数値計算に重きを置いている。
seabornのサンプルデータは可視化も踏まえたデータ内容となっている。
サンプルデータ一覧の取得
get_dataset_names()を使うことで、取得可能なサンプルデータの一覧を取得できる。
1import seaborn as sns
2
3sample_data_list = sns.get_dataset_names()
4print(sample_data_list)
1>>
2['anagrams',
3 'anscombe',
4 'attention',
5 'brain_networks',
6 'car_crashes',
7 'diamonds',
8 'dots',
9 'exercise',
10 'flights',
11 'fmri',
12 'gammas',
13 'geyser',
14 'iris',
15 'mpg',
16 'penguins',
17 'planets',
18 'taxis',
19 'tips',
20 'titanic']
githubからもデータ一覧をCSVを確認できる。
https://github.com/mwaskom/seaborn-data
分類用データ取得
タイタニック号の生存者データ
勉強用データとして有名なタイタニックのデータ。
1df_titanic = sns.load_dataset("titanic")
2print(df_titanic.head())
1>>
2 survived pclass sex age sibsp parch fare embarked class \
30 0 3 male 22.0 1 0 7.2500 S Third
41 1 1 female 38.0 1 0 71.2833 C First
52 1 3 female 26.0 0 0 7.9250 S Third
63 1 1 female 35.0 1 0 53.1000 S First
74 0 3 male 35.0 0 0 8.0500 S Third
8
9 who adult_male deck embark_town alive alone
100 man True NaN Southampton no False
111 woman False C Cherbourg yes False
122 woman False NaN Southampton yes True
133 woman False C Southampton yes False
144 man True NaN Southampton no True
「class」列~「alive」列は「survived」列~「embarked」列とほぼ同じ内容になる(数値が文字列になっているだけだったりする)。
カテゴリーデータの基本的なエンコーディングについても学べるようになっている。
可視化の際には、カテゴリーデータの値を使うことで、意味も通じやすくなる。
あやめの分類データ
多クラス分類のための基本的なデータ。
1df_iris = sns.load_dataset("iris")
2print(df_iris.head())
1>>
2 sepal_length sepal_width petal_length petal_width species
30 5.1 3.5 1.4 0.2 setosa
41 4.9 3.0 1.4 0.2 setosa
52 4.7 3.2 1.3 0.2 setosa
63 4.6 3.1 1.5 0.2 setosa
74 5.0 3.6 1.4 0.2 setosa
scikit-learnにもサンプルデータとして存在する。
scikit-learnのデータの場合、目的変数であるspeciesが0, 1, 2の数値になっている。
回帰用データ
チップ支払額データ
食事の際に支払われたチップの金額のデータ。
1df_tips = sns.load_dataset("tips")
2print(df_tips.head())
1>>
2 total_bill tip sex smoker day time size
30 16.99 1.01 Female No Sun Dinner 2
41 10.34 1.66 Male No Sun Dinner 3
52 21.01 3.50 Male No Sun Dinner 3
63 23.68 3.31 Male No Sun Dinner 2
74 24.59 3.61 Female No Sun Dinner 4
dayには曜日が入っているため、日付の扱い方も少し必要になってくる。
時系列用データ取得
旅客機の乗客数データ
飛行機の乗客数の月次データ。
1df_flights = sns.load_dataset("flights")
2print(df_flights.head())
1>>
2 year month passengers
30 1949 Jan 112
41 1949 Feb 118
52 1949 Mar 132
63 1949 Apr 129
74 1949 May 121
月次データなので、144行しかデータがないが、時系列データの基本を学習するには良いデータ。(144行といっても月次だと12年分のデータとなる。)
説明変数が一切ないからこそ、自分で移動平均や微分などを作成する練習になる。
scikit-learnからサンプルデータを取得する方法
scikit-learnからサンプルデータを取得する場合、以下の記事を参照。
scikit-learnのサンプルデータは全ての値が数値のため、カテゴリー項目のエンコーディングを気にせず、計算することが可能。
カテゴリーのエンコーディング以外の部分を練習、テストしたい場合などは、scikit-learnのサンプルデータを使う方が良いかもしれない。
まとめ
1import seaborn as sns
2
3# 取得可能なサンプルデータ一覧の取得
4sample_data_list = sns.get_dataset_names()
5
6# タイタニックデータ(2値分類)
7df_titanic = sns.load_dataset("titanic")
8
9# あやめデータ(多クラス分類)
10df_iris = sns.load_dataset("iris")
11
12# 旅客機データ(時系列データ)
13df_flights = sns.load_dataset("flights")