とある技術者の徒然草

生産技術者の適当な日記(統計言語Rに関するメモがメイン)

【python】コルモゴロフ-スミルノフ検定を実施し、カテゴリ別で分布に差がある変数を探す

コルモゴロフ-スミルノフ検定を実施し、生存、死亡の差がある分布を探す

kaggleのブログで見つけたコルモゴロフ-スミルノフ検定の使用例を勉強するためにメモしておきます。

良品・不良品間でどの変数が分布に差があるか検討するときに使えそう。

#コルモゴロフ-スミルノフ検定を実施し、生存、死亡の差がある分布を探す
import numpy as np
import pandas as pd
from scipy.stats import ks_2samp

path = "C:/XXXXXXX/titanic"
train = pd.read_csv(path + "/train.csv")
test = pd.read_csv(path + "/test.csv")

#数値型のみ列を抜き出す
print (train.select_dtypes(include='number').columns)
number_col =  train.select_dtypes(include='number').columns
number_col2 = set(number_col)-set(['PassengerId','Survived'])
print (number_col2)

list_p_value =[]

for i in  range(len(number_col2)):
    train_0 = train.loc[train['Survived'] == 0]
    train_0 = train_0[list(number_col2)[i]]
    
    train_1 = train.loc[train['Survived'] == 1]
    train_1 = train_1[list(number_col2)[i]]
    
    list_p_value.append(ks_2samp(train_0, train_1)[1])
    
Se = pd.Series(list_p_value, index = number_col2).sort_values()

print (Se)

print ('0.1以上で死者・生存者間で差があるとは言えない')
print ('0.1以下で死者・生存者間で差がある')

list_discarded = list(Se[Se < .1].index)

print (list_discarded)

■参考
コルモゴロフ-スミルノフ検定を利用した特徴量選択 - u++の備忘録

【R / Python】データハンドリン関係のコマンド比較まとめページ

データハンドリン関係のコマンド比較まとめページ

pythonの勉強を進めるうちにRのコマンドと混同しそうになってきた。
いつでも振り返りができるように、
コマンドを比較しているページをまとめておく。

  1. PythonとRのコマンド比較表

qiita.com

  1. dplyr使いのためのpandas 基本編

qiita.com


  1. python pandas と R tidyverseの比較

qiita.com

今のところ参考にしているページは以上