작성
·
248
0
안녕하세요!
강의 열심히 수강중입니다.
전처리 부분을 듣고 혼자서 titanic 데이터를 전처리 해보던 중에 문법(?)에
관련된 궁금증이 있어 질문올립니다.
ex)
def abc(df):
df[" "].fillna()
return df
라는 함수가 있다면
data_df = abc(data_df)
위와 같이 data_df 에 반환값을 다시 넣어주지 않고
abc(data_df)만 실행시킬 경우
data_df가 abc라는 함수에서 연산된
반환값이 그대로 적용되는데
왜 아래의 x_titanic_df 가 함수의 반환값이 들어가있는지 잘 모르겠습니다
deep copy와 관련되어있는 건가요??
답변 5
0
안녕하십니까,
아마 사이킷런 버전 차이가 가장 큰 원인일 것입니다.
특히 Logistic regression의 경우 default 파라미터가 일부 변경되었습니다.
정확도 성능을 높이고자 설명드린 부분이 아니오니 강의 동영상과 예측 정확도가 달라지는 부분은 크게 신경쓰지 않으셔도 될 것 같습니다.
감사합니다.
0
타이타닉 데이터로 강의 내용을 토대로 분석을 돌린 결과 입니다
의사결정나무는 강의 내용과 같은 accuracy를 보이지만
랜덤포레스트와 로지스틱 회귀분석에서는 정확도가 다릅니다.
혹시나해서 전처리 과정과 패키지 재설치 등을 해보았지만
역시 다른 결과를 출력하여 질문하게 되었습니다.
sklearn의 패키지 버전 차이일까요?
버전이 달라도 같은 결과를 보일것으로 예상되는데...
혹은 밑의 warning이 연관되어 있는지 궁금합니다..
0
0
답변 감사합니다!!
그러면 원본 데이터 즉, x_titanic_df (x_titanic_df가 원본 데이터라는 가정하에) 를 건드리지 않고 유지하고 싶다면, 따로
train_x = x_titanic_df.copy() 처럼 따로
복사를 하고 복사된 train_x를 이용하여 원하는 작업을 하면 될까요??
저는 함수의 반환값을 x_titanic_df에 다시 넣어주질 않았는데 x_titanic_df가
전처리 작업이 수행된 dataframe으로 바뀌어 있어서 질문을 남기게 되었습니다.
0
안녕하십니까.
먼저,
def abc(df):
df[" "].fillna()
return df
관련해서 질문해 주신 부분은 제가 잘 이해를 못했습니다만 x_titanic_df가 왜 값을 반환 받는지에 대한 질문으로 이해하고 답변 드리겠습니다. 원하시는 답변이 아니면 다시 말씀해 주십시요.
x_titanic_df는 DataFrame의 특정 컬럼값 Series를 반환 받습니다.
DataFrame의 [] 내에 컬럼명을 입력하면 DataFrame에서 특정 컬럼값의 Series를 메모리로 복사하여 반환해 줍니다. 아마도 DataFrame의 [ ] 연산자 구현내부에 deep copy 후 return 이 들어가 있는 것 같습니다.
감사합니다.