인프런 커뮤니티 질문&답변

munjihey1127님의 프로필 이미지
munjihey1127

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

캐글(kaggle) 필사 전략

캐글 - 타이타닉 작업형2

해결된 질문

작성

·

189

0

train=pd.read_csv("/kaggle/input/titanic/train.csv")

test=pd.read_csv("/kaggle/input/titanic/test.csv")

 

#전처리

train= train.fillna(0)

test= test.fillna(0)

 

from sklearn.preprocessing import LabelEncoder

le=LabelEncoder()

cols = ['Name','Sex','Ticket','Cabin','Embarked']

for col in cols:

train[col]= le.fit_transform(train[col])

test[col]=le.transform(test[col])

 

이렇게 실행했더니

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File /opt/conda/lib/python3.10/site-packages/sklearn/utils/_encode.py:224, in _encode(values, uniques, check_unknown)
    223 try:
--> 224     return _map_to_integer(values, uniques)
    225 except KeyError as e:

File /opt/conda/lib/python3.10/site-packages/sklearn/utils/_encode.py:164, in _map_to_integer(values, uniques)
    163 table = _nandict({val: i for i, val in enumerate(uniques)})
--> 164 return np.array([table[v] for v in values])

File /opt/conda/lib/python3.10/site-packages/sklearn/utils/_encode.py:164, in <listcomp>(.0)
    163 table = _nandict({val: i for i, val in enumerate(uniques)})
--> 164 return np.array([table[v] for v in values])

File /opt/conda/lib/python3.10/site-packages/sklearn/utils/_encode.py:158, in _nandict.__missing__(self, key)
    157     return self.nan_value
--> 158 raise KeyError(key)

KeyError: 'Wilkes, Mrs. James (Ellen Needs)'

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
Cell In[58], line 22
     20 for col in cols:
     21     train[col]= le.fit_transform(train[col])
---> 22     test[col]=le.transform(test[col])

File /opt/conda/lib/python3.10/site-packages/sklearn/utils/_set_output.py:140, in _wrap_method_output.<locals>.wrapped(self, X, *args, **kwargs)
    138 @wraps(f)
    139 def wrapped(self, X, *args, **kwargs):
--> 140     data_to_wrap = f(self, X, *args, **kwargs)
    141     if isinstance(data_to_wrap, tuple):
    142         # only wrap the first output for cross decomposition
    143         return (
    144             _wrap_data_with_container(method, data_to_wrap[0], X, self),
    145             *data_to_wrap[1:],
    146         )

File /opt/conda/lib/python3.10/site-packages/sklearn/preprocessing/_label.py:139, in LabelEncoder.transform(self, y)
    136 if _num_samples(y) == 0:
    137     return np.array([])
--> 139 return _encode(y, uniques=self.classes_)

File /opt/conda/lib/python3.10/site-packages/sklearn/utils/_encode.py:226, in _encode(values, uniques, check_unknown)
    224         return _map_to_integer(values, uniques)
    225     except KeyError as e:
--> 226         raise ValueError(f"y contains previously unseen labels: {str(e)}")
    227 else:
    228     if check_unknown:

ValueError: y contains previously unseen labels: 'Wilkes, Mrs. James (Ellen Needs)'

이런 에러값이 나오는데 왜그런거죠?

강사님이 작성하신 풀이에는

결측치값을 놔두시고

오브젝트형인 데이터도 다 수치형으로 안바꾸시던데

왜그런거죠?

답변 1

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

Name은 train과 test에서의 종류가 많이 다릅니다. Name은 입력데이터로 사용하기 위해서는 다른방법을 사용해야 해요(예를들면 이름의 길이도 될 수 있고요) 입문자에게는 버리는 것을 추천합니다.

 

캐글에서의 코드는 예시일 뿐입니다. 무료로 오픈한 내용으로 꼼꼼히 작업하진 않았습니다.

작업을 초소화한 형태로 수치형만 사용해서 모델을 만들었어요 (간단한 모델로 생각해주세요)

munjihey1127님의 프로필 이미지
munjihey1127

작성한 질문수

질문하기