Kaggleコンペ(Instant Gratification)
今日からInstant Gratificationコンペに参加します。
https://www.kaggle.com/c/instant-gratification/
【コンペ名】
Instant Gratification
【データの説明】
匿名データの二値分類
【コード】
まずは、訓練データとテストデータのサイズを確認します。
import numpy as np import pandas as pd import os import matplotlib.pyplot as plt import seaborn as sns df_train = pd.read_csv("../input/train.csv") df_test = pd.read_csv("../input/test.csv") print("trian data shape = ".format(df_train.shape)) print("test data shape = ".format(df_test.shape))
trian data shape = (262144, 258) test data shape = (131073, 257)
つぎに、訓練データに注目し、データフレームの先頭5行分確認します
display(df_train.head())
カラム名が匿名なため、データの意味は不明
次は、分類の目的変数であるtargetの個数を確認する。
sns.countplot(df_train["target"])
“0”,”1″ラベルの個数は両方ともだいたい同じであるようだ。
次は、欠損値の確認。
# 欠損値の確認 null_train_se = df_train.isnull().sum() # nullが存在するカラム名の表示 print(null_train_se[null_train_se==1])
Series([], dtype: int64)
欠損値はないことがわかった。
各説明変数の分布はどうなっているか確認する。
# 特徴の名前を取得 feature_name_list = [feature_name for feature_name in df_train.columns if not feature_name in ["id","target"]] # 分布プロット用の関数 def distplot(df_1,df_2,label_1,label_2,feature_name_list,row_size,col_size): plt.figure() ratio = int(len(feature_name_list)/col_size) plt.subplots(row_size,col_size,figsize=(15,5*(ratio+1))) cnt = 0 for feature_name in feature_name_list: cnt += 1 plt.subplot(row_size,col_size,cnt) sns.distplot(df_1[feature_name],hist=False,label=label_1) sns.distplot(df_2[feature_name],hist=False,label=label_2) plt.title(cnt) distplot(df_train[feature_name_list].loc[df_train["target"] == 0], df_train[feature_name_list].loc[df_train["target"] == 1], "0","1",feature_name_list,64,4)
256個のグラフが出力されるが、数が多すぎるので、その中の一部を示す。
上の4つのグラフのうち、右から2番目のwheezy-copper-turtie-magicという変数の分布は他のグラフと比べて形が大きく異なる。
実は、この変数以外の255個の変数はだいだい0周辺に値が集中している分布だ。
target=0とtarget=1との分布の違いは見られなかった。