해결된 질문
작성
·
183
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은 입력데이터로 사용하기 위해서는 다른방법을 사용해야 해요(예를들면 이름의 길이도 될 수 있고요) 입문자에게는 버리는 것을 추천합니다.
캐글에서의 코드는 예시일 뿐입니다. 무료로 오픈한 내용으로 꼼꼼히 작업하진 않았습니다.
작업을 초소화한 형태로 수치형만 사용해서 모델을 만들었어요 (간단한 모델로 생각해주세요)