inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] 처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part2]

다르게 적용해보는 Feature Engineering2 (업데이트)

다르게 적용해보는 Feature Engineering2 강의 질문입니다

318

vpdtlrdl

작성한 질문수 45

0

다르게 적용해보는 Feature Engineering2 강의의 15:13 부분에서 질문입니다

강의에서는

mean_survival_rate = np.mean(df_train['Survived'])

와 같이 df_train 데이터프레임 Survived 컬럼의 값에 대해 평균을 구하고

이를 생존할 확률 이라고 정의하였습니다.

 

저는 Survived 컬럼의 값은 0과 1로만 이루어져 0은 사망, 1은 생존 이라는 의미를 나타내는 명목 척도로 이해하였는데요,

이에 대해 평균을 내면서 값을 구하는 것이 확률로써의 의미를 가질 수 있다는 것이 조금 이해가 되지 않습니다.

제가 잘못 받아들이고 있는 것인지 좀 더 보충 설명 해주시면 너무 감사할 것 같습니다!

python 머신러닝 pandas kaggle

답변 1

0

잔재미코딩 DaveLee

안녕하세요. 답변 도우미입니다.

말씀하신 부분과 관련된 코드가 다음 코드로 이해를 하고 설명드리겠습니다. 기본적으로는 여러 피처를 만들어서, 최대한 예측률이 높은 방향으로 학습을 강화시키는 것이 목적인데요.

Survived 컬럼의 평균을 생존 확률로 사용한다는 용어 부분이 조금 혼란스러우신 것으로 이해를 해도 되겠죠? 우선 이는 이진 분류 문제에서의 통계적인 개념을 기반으로 하고 있습니다.Survived 컬럼은 0과 1의 값만 갖기 때문에, 이 컬럼의 평균은 다음과 같이 계산됩니다:

  • 1의 개수(생존한 승객 수)를 전체 승객 수로 나눈 값

즉, 평균은 생존한 승객의 비율, 즉 생존 확률로 해석될 수 있습니다.

  1. 비율로서의 의미: Survived 컬럼의 평균은 생존한 승객의 비율을 나타냅니다. 전체 승객 중 얼마나 많은 승객이 생존했는지를 나타내는 값이므로, 이 값이 생존 확률로 해석될 수 있습니다.

  2. 확률로서의 의미: 평균 생존률은 "무작위로 선택된 승객이 생존할 확률"로 해석될 수 있습니다. 이 값은 주어진 데이터셋에서의 생존 확률을 나타내는 추정치입니다.

  3. Feature Engineering 에서의 사용: 이 문제에서는 mean_survival_rate가 "생존 정보가 없는 승객에 대한 기본 생존 확률"로 사용되고 있습니다. 동승자가 없는 경우나, 동승자의 생존 정보가 없는 경우에 이 평균 생존률을 사용하는 것입니다.

  4. 명목 척도와 확률: Survived 컬럼은 0과 1의 값만 가지므로 명목 척도로 볼 수 있지만, 이 경우에는 1의 비율을 생존 확률로 해석하는 것이 의미가 있습니다. 베르누이 확률 변수의 확률 질량 함수를 생각하면 이해가 될 수 있습니다. 확률 변수가 1을 취할 확률이 p라면, 0을 취할 확률은 1-p입니다. 여기서 p는 생존 확률, 1-p는 사망 확률로 해석될 수 있습니다.

따라서 Survived 컬럼의 평균은 "생존 확률"로 해석될 수 있으며, 이 값을 사용해서 학습에 도움이 될만한 피처를 만들어낸 것입니다.

감사합니다.

df_family_survived_rate = df_train.groupby('Family_Name')['Survived', 'Family_Size'].median()

family_rates = dict()
for family_name in df_family_survived_rate.index:
    if df_family_survived_rate.loc[family_name][1] > 1 and (family_name in df_train['Family_Name'].unique() and family_name in df_test['Family_Name'].unique()):
        family_rates[family_name] = df_family_survived_rate.loc[family_name][0]

family_survival_rate = list()
family_survival_rate_NA = list()
mean_survival_rate = np.mean(df_train['Survived'])

for i in range(len(df_all)):
    if df_all['Family_Name'][i] in family_rates:
        family_survival_rate.append(family_rates[df_all['Family_Name'][i]])
        family_survival_rate_NA.append(1)
    else:
        family_survival_rate.append(mean_survival_rate)
        family_survival_rate_NA.append(0)

df_all['Family_Survival_Rate'] = family_survival_rate
df_all['Family_Survival_Rate_NA'] = family_survival_rate_NA        

 

 

자료 공유 질문

0

57

1

Ascii 에러 관련하여 질문드립니다

0

81

1

고차원 데이터 질문

0

52

0

test / train 데이터 나누기

0

97

1

세션4 범주형 데이터 분석 패턴 강의 질문

0

199

2

pandas 2.2.2, xgboost 2.1.3 에러 해결 방법

0

215

1

sklearn v1.5.1

0

168

1

머신러닝 적용을 위한 Feature Engineering 작업1

0

178

2

missingno 대체

0

167

1

scikit-learn 1.5.1 matplotlib 3.9.2

0

129

1

환불문의

0

263

1

자료공유를 받으려고 하는데 에러가 납니다.

0

157

1

iplot에서 항상 에러나는 분 안계신가용?

0

221

1

사망 여부 영향 가능성

0

142

1

섹션4_인코딩 이해하고 적용해보기(원핫인코딩) 질문

0

189

1

df.corr(numeric_only=True).iplot() 에러 해결 어떻게 해야되나요?

0

277

1

주피터 노트북 201_REGRESSION_BIKE_SHARING_MODELS 중 질문

0

244

1

3강 강의 자료 코드 관련 질문입니다

1

336

1

맥 사용자 mkdir .kaggle 했는데 파일이 안만들어집니다.

0

414

1

Bayesian Optimization에서 optimizer.maximize()함수를 더이상 지원 안한다고 합니다.

0

875

2

Bayesian Optimization LightGBM 적용

0

457

2

하이퍼 파라미터 튜닝 기법 적용하기 실행값이 미묘하게 달라요.

1

341

1

중복된 코드 수정 요청 - 자전거 공유 문제 이해와 EDA3

0

214

1

강의 중 에러 질문

0

739

1