Kaggleのチュートリアル輪読会1回目の発表内容を公開します。
===
以下の勉強会で発表者をやることになったので、資料をつくっています。発表スライドを作りながら公開していきます。
→【5/15更新】以下の勉強会で発表者をやりました。発表資料の内容を公開します。
もし読んでいて質問があれば、質問箱までどうぞ。すぐに答えます
スライドの目次(案)
・1. 自己紹介
・2. はじめに
・3. 1章 Kaggleについて
・4. 2章 コンペのページの翻訳など
・5. 3章 まずは、サブミットしてみる
・6. 4章 タイタニックデータの概要
・7. pandas-profilingについて
1. 自己紹介
2. はじめに
はじめに、目次
1章 Kaggleについて
2章 コンペのページの翻訳など
・資格で囲んである文章は、Kaggleのページを翻訳した箇所
・2224人の乗客と乗組員のうち1502人が死亡しました。
生存者は722人、死亡者67.5%、生存者32.5%だということがわかる。
・Evaluation (評価) を読んでおくのは重要。
・タイタニックコンペのスコアは、accuracy (精度)。
・Praivate Leaderboard (非公開スコア) とPublic Leaderboard (公開スコア)の違い
・チュートリアル
http://www.currypurin.com/entry/2018/04/17/102140 にリンクがあります。
3章 まずは、サブミットしてみる
・カーネル環境のNotebookでやる方は、3.2のカーネル環境のノートブックを用いる方法
・ローカル環境でやる方は、3.4のろーかるPCで作成したデータをサブミットする方法
を読んで、サブミットしてみましょう。
4章 タイタニックデータの概要
・4章のコード(nbviewer)
http://nbviewer.jupyter.org/github/currypan/tb4-datarefinement/blob/master/tb4_kaggle_book_ch4.ipynb
・4章のコード(kaggle)
https://www.kaggle.com/currypurin/kaggle-ch4/code
4.1 ライブラリのインポートとデータの読み込み
4.2 データの概要を確認する
4.2.1 データフレームについて
4.2.2 データフレームの行数と列数を確認
print(df_train.shape) # 学習用データ
print(df_test.shape) # 本番予測用データ
print(df_gender_submission.shape) # 提出データのサンプル
・ df_train : 891行×12列
・ df_test : 418行×11列
・ df_gender_submission : 418行×2列
・学習データであるdf_trainには、891人分のデータが含まれる
・本番予測用のデータであるdf_testには、418人分のデータが含まれる
・学習用データにより学習したモデルで、本番予測用のデータの生存予測をする。df_testは1列少なくなっている。
・参考 → https://qiita.com/terapyon/items/8f8d3518ee8eeb4f96b2
4.2.3 列の名前の確認
print(df_train.columns) # トレーニングデータの列名
print('-'*10) # 区切りを挿入
print(df_test.columns) # テストデータの列名
df_testには、Suvived列がない。 (当然)
4.2.4 df.info()で概要の確認
df_train.info()
float型が2つ、int型が5つ、object型が5つであることがわかる
df_test.info()
df_testはint型が1つ少ない
4.2.5 df.head()で概要の確認
df_train.head()
・Embarkedには1文字の大文字のアルファベットが入っていること、
・Nameには、Mr、Mrs、Missという敬称が含まれること、
・Ticketには、アルファベットや数字が含まれそうなこと
などがわかる (正確にはこの5つのデータから全体を予測)
4.2.6 欠損値がいくつあるか確認
df_train.isnull().sum()
欠損値の数は、多い順にCabinが687、Ageが177、Embarkedが2、であることがわかります。
df_test.isnull().sum()
df_testの欠損値は、Cabinが327、Ageが86、Fareが1であることがわかります。
4.2.7 要約統計量の表示
df_train.describe()により、数値データのみの、データ数、平均値、標準偏差、最小値、最大値、四分位数 (データを大きさ順に並べた時に25%、50%、75%の位置にくる値)が表示されます。
df_trainとdf_testをpd.concat()により縦に連結し、df_fullを作成してから、要約統計量を表示してみます。
# df_trainとdf_Testを縦に連結
df_full = pd.concat([df_train, df_test], axis = 0, ignore_index=True)
print(df_full.shape) # df_fullの行数と列数を確認
df_full.describe() # df_fullの要約統計量
df.describe(include = 'all')と書くと全てのデータについての要約統計量を表示することができます。
df_full.describe(include = 'all')
df.describe(include=['O'])と書くと、オブジェクト型のみを表示できる。
train_df.describe(include=['O'])
df.describe(percentiles=[.1, .2, .3, .4, .5, .6, .7, .8, .9, .99])と書いて、表示するパーセンタイルを指定可能。(このようにかくと、10%刻みと99%の値が表示される。
df_train.describe(percentiles=[.1, .2, .3, .4, .5, .6, .7, .8, .9, .99])
4.2.8 死亡者と生存者の可視化
sns.countplot(x='Survived', data=df_train)
plt.title('死亡者と生存者の数')
plt.xticks([0,1],['死亡者', '生存者'])
# Survived列の値を集計
df_train['Survived'].value_counts()
# 男女別の生存割合を表示する
df_train[['Sex','Survived']].groupby(['Sex']).mean()
Survived Sex
female 0.742038
male 0.188908
男女別の死亡者数と生存者の数
sns.countplot(x='Survived', hue='Sex', data=df_train)
plt.xticks([0.0,1.0], ["死亡","生存"])
plt.title("男女別の死亡者と生存者の数", fontsize = 20)
4.2.9 チケットクラス
# チケットクラス別の生存者数を可視化
sns.countplot(x='Survived', hue='Pclass', data=df_train)
plt.xticks([0.0,1.0], ['死亡','生存'])
# チケットクラス別の生存割合を表示する
df_train[['Pclass','Survived']].groupby(['Pclass']).mean()
# チケットクラス別の生存割合を表示する
df_train[['Pclass','Survived']].groupby(['Pclass']).mean()
Survived Pclass
1 0.629630
2 0.472826
3 0.242363
次の4.2.10から、4.2.15については、ここでは説明を省略します。コードについては、公式サイトを参照ください。
4.2.10 年齢の分布
4.2.11 タイタニック号に乗っている兄弟・配偶者の数
4.2.12 タイタニック号に乗っている両親・子供の数
4.2.13 1人で乗船しているか2人以上で乗船しているか
4.2.14 運賃の分布
4.2.15 名前
pandas-profilingについて
上記のqiitaを参考にやってみた。たしかにめちゃくちゃ便利!!
import pandas as pd
import pandas_profiling as pdp
df = pd.read_csv('train.csv')
pdp.ProfileReport(df)
これだけ!(google colaboratoryの場合はもう少し必要)
一番上には次のような概要が表示されます。
表示される内容
・Datasetinfo:データ数、欠損値数、データサイズなど
・Variables types:型の情報
・Warnings:欠損値、要素が大きい、ゼロが多いなどの警告
特徴量ごとの情報
すべての特徴量について要素数、ユニーク数、欠損率、平均、min、maxとヒストグラムなとが表示されます。
右下にあるtoggle detailsをクリックするとさらに詳細を確認できる。
Statistics
Histogram
Common Values
Extreme Values
コメントお待ちしています。匿名の質問はマシュマロから→https://marshmallow-qa.com/currypurin