シリーズ



  • 家族-兄弟姉妹+親子

  • SibSpとParchを合わせたシリーズです

  • シリーズ別集計分析

  • 家庭規模と生存関係

  • Figure(1):家庭の大きさ1から11

  • 大部分は1名か2~4名です

  • Figure(2),(3):家庭の大きさによって比較的に生存する

  • 4人家族の生存率が最も高い

  • 家の人口が多ければ多いほど小さくなる

  • つまり3~4人が最高

  • Fare

  • 搭乗料

  • contious feature

  • ぶんぷきょくたいしょう

  • 異常値への反応が過激であるため,実体予測の結果が悪い可能性がある.

  • Fare columnsのログ値の取得

  • python ramda関数を使用する(map、logは簡単に挿入できます)

  • logを用いた非対称性は急速に消失した.

  • これにより、モデルのパフォーマンスが向上します.

  • Feature Engineeringタスク(モデルパフォーマンスの向上)

  • Cabin

  • NaN約80%

  • 生存への影響は微々たるものだ.

  • モデルは含まれません.

  • Ticket

  • NaNなし

  • string dataなので、モデルを適用するには任意の操作を実行する必要があります.

  • 重要なアイデア

  • ticket numberには多様性があるため,どのような特徴を抽出して生存に関連付けるべきかを考慮しなければならない.
  • 家族~兄弟姉妹+親子

    df_train['FamilySize'] = df_train['SibSp'] + df_train['Parch'] + 1 #자신을 포함
    df_test['FamilySize'] = df_test['SibSp'] + df_test['Parch'] + 1 #자신 포함
    print("Maximum size of Family: ", df_train['FamilySize'].max())
    print("Minimum size of Family; ", df_train['FamilySize'].min())
    f,ax = plt.subplots(1,3, figsize=(40,10))
    sns.countplot('FamilySize', data = df_train, ax=ax[0])
    ax[0].set_title('(1) No. Of Passengers Boarded', y= 1.02)
    
    sns.countplot('FamilySize', hue='Survived', data=df_train, ax=ax[1])
    ax[1].set_title('(2) Survived countplot dependings on FamilySize', y=1.02)
    
    df_train[['FamilySize', 'Survived']].groupby(['FamilySize'], as_index=True).mean().sort_values(by='Survived', ascending=False).plot.bar(ax=ax[2])
    ax[2].set_title(' (3) Survived rate depending on FamilySize', y=1.02)
    
    plt.subplots_adjust(wspace=0.2, hspace=0.5)
    plt.show()
    

    Fare

    fig, ax = plt.subplots(1, 1, figsize=(8,8))
    g = sns.distplot(df_train['Fare'], color='b', label = 'Skewness : {:.2f}'.format(df_train['Fare'].skew()), ax=ax)
    g = g.legend(loc='best')
    df_test.loc[df_test.Fare.isnull(), 'Fare'] = df_test['Fare'].mean()
    
    df_train['Fare'] = df_train['Fare'].map(lambda i: np.log(i) if i > 0 else 0)
    df_test['Fare'] = df_test['Fare'].map(lambda i : np.log(i) if i > 0 else 0)
    fig, ax = plt.subplots(1, 1, figsize=(8,8))
    g = sns.distplot(df_train['Fare'], color='b', label='Skewness : {:.2f}'.format(df_train['Fare'].skew()), ax=ax)
    g = g.legend(loc='best')

    Cabin

    df_train.head()

    Ticket

    df_train['Ticket'].value_counts()