해결된 질문
작성
·
165
0
원핫인코딩 관련하여 질문이 있습니다.
cols = [ object형 컬럼들, , , ] 으로 지정한 후 어떤 문제에서는
pd.get_dummies(df[cols]) 로 되어있는 곳도 있고,
pd.get_dummies(df, columns=cols)로 되어있는 곳도 있는데, 둘다 마찬가지 결과가 나오는걸까요?
추가적으로, 다중분류 부분에서 보면 숫자로되어 있는 object형 변수는 자동으로 원핫인코딩이 되지 않으므로
pd.get_dummies(df[0])으로 코딩해야 한다고 하셨는데요,
그렇다면 위의 예시에서 df, columns=cols로 했을 경우에는 숫자로 되어있는 변수는 dtype이 object형이어도 자동으로 원핫인코딩이 되지않는걸까요..?
답변 1
0
pd.get_dummies(df[cols]) 과 pd.get_dummies(df, columns=cols)는 차이가 있어요
pd.get_dummies(df[cols])
:
이 방식은 먼저 df[cols]
를 통해 데이터프레임 df
에서 cols
에 해당하는 열만 선택합니다.
그런 다음 pd.get_dummies
를 이용해 이 선택된 부분집합에 대해 원-핫 인코딩을 수행합니다.
결과적으로, 원-핫 인코딩된 데이터프레임은 cols
에 지정된 열만 포함하며, df
의 다른 열은 포함되지 않습니다.
숫자가 있다면 숫자가 있는 컬럼은 인코딩 하지 않습니다.
pd.get_dummies(df, columns=cols)
:
이 방식은 원본 데이터프레임 df
를 기반으로 합니다.
columns=cols
매개변수를 통해 cols
에 지정된 열만 원-핫 인코딩을 적용합니다.
결과적으로, 원-핫 인코딩된 열은 cols
에 지정된 범주형 열로 대체되지만, df
의 다른 열(원-핫 인코딩되지 않은 열)도 결과 데이터프레임에 포함됩니다.
숫자가 있는 컬럼이 있어도 강제로 원핫인코딩 합니다.
두번째 질문은 조금 이상합니다. 다시 질문 부탁드려요
pd.get_dummies(df[0]) 코드를 제가 설명한 적이 있을까요? df[0]는 저도 알 수 없는 코드라서요~😱
columns=cols로 했을 경우에는 숫자로 되어있는 변수는 dtype이 object형이어도 자동으로 원핫인코딩이 되지않는걸까요..?
아니요! 겟더미즈에 넣으면 object형은 원핫인코딩 됩니다. 🙂
답변 감사드립니다!!
말씀주신 부분은 다중분류 평가지표 부분에서 pd.get_dummies(y_true[0])이라고 되어있는 부분이었습니다.
y_true는 [2, 2, 3, 3, 2, 1,....] 이런 리스트였구요. 숫자면 자동으로 원핫인코딩 되지않아서 [0]을 넣었다고 하셨던것같아서 여쭤봤습니다. 위의 df[cols]와 관련이 있나 했어요^^;;