작성
·
255
0
안녕하세요!
128페이지의 코드를 그대로 써서 진행하였는데 오류가 나서 이렇게 질문드립니다.
128페이지의 마지막 코드를 그대로 진행하니 some_digit = X[0] 부분에서 오류가 나며 KeyError: 0 이 뜨게 되었습니다.
위의 코드는 제가 X.loc[0]으로 하니 some_digit이 series로 반환되어 some_digit_image에서 some_digit.values.reshape()으로 하는 방식을 취하여 새로 작성한 코드입니다. (결과는 동일하게 나온 것 같았습니다!)
128페이지 뿐만 아니라 132페이지의 코드에서도 비슷한 일이 일어났는데,
본래의 코드는 X_train_folds, y_train_folds, X_test_fold, y_test_fold를 지정할 때 loc이 붙지 않는 코드였지만 이것 또한 위의 상황과 비슷하게 인덱싱이 잘못되었다고 나오며 loc를 붙이니 진행이 되었습니다.
왜 이런 상황이 발생하는지, 계속 이러한 방식으로 인덱싱을 해야 하는 것인지 여쭤보고 싶습니다:)
답변 2
0
안녕하세요. 박해선입니다.
아, fetch_openml 함수를 그대로 사용하신 것 같군요. 사이킷런 0.24버전부터 fetch_openml 함수가 기본적으로 데이터프레임을 반환하기 때문에 as_frame 매개변수를 Fasle로 지정해야 합니다. 블로그의 에러타 페이지(https://tensorflow.blog/handson-ml2/)의 105번을 참고하세요.
감사합니다.
0
안녕하세요. 박해선입니다.
이는 판다스 데이터프레임이기 때문입니다. loc 메서드에 대한 온라인 문서(https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.loc.html)와 간단한 판다스 튜토리얼(https://ml-ko.kr/homl2/tools_pandas.html)을 참고하세요.
온라인 검색으로도 판다스 데이터프레임에 관한 많은 자료를 찾아 보실 수 있습니다.
감사합니다!
답변 정말 감사합니다!
말씀해 주신대로 튜토리얼을 확인해보니, 판다스 데이터프레임도 일반 배열처럼 정수 인덱스를 사용하여 원소에 접근할 수 있다고 나와있었습니다! 그런데 저의 코드에서는 X[0]과 같은 정수 인덱스를 사용하면 KeyError가 뜨게 되는데, 혹시 왜 이런 것인지 알 수 있을까요?
또한 X를 보았을 때 colums는 'pixel1'이나 'pixel2'같이 되어 있고, row는 0, 1 이런 식으로 되어 있는 것을 확인 할 수 있었는데, X['pixel1']은 실행이 되었으나 X['0']은 오류가 발생했습니다. 이것에 대한 이유도 설명해주시면 정말 감사드리겠습니다...!
안녕하세요. https://ml-ko.kr/homl2/tools_pandas.html 에 있는 행 참조하기 절을 참고하세요. 데이터프레임의 행은 iloc 메서드를 사용해야 합니다. 감사합니다.
아하 감사합니다!
마지막으로 한가지만 더 질문드리겠습니다...!!ㅠㅠ
데이터프레임의 행은 iloc 메서드를 사용해야 하는 것은 이해하였는데, 그렇다면 책의 X[0]은 오류가 날 수밖에 없는 것인가요??
아하 애초에 판다스 데이터프레임이면 안 되는 거였군요...!!!
감사합니다!! 다시 한번 시도해보겠습니다:)