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

iixnim님의 프로필 이미지
iixnim

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

KDE(Kernel Density Estimation)의 이해와 사이킷런을 이용한 MeanShift 군집화 실습

MeanShift(best_bandwidth) TypeError

작성

·

356

·

수정됨

0

'KDE(Kernel Density Estimation)의 이해와 사이킷런을 이용한 MeanShift 군집화 실습' 수강중 12:00 즈음 '최적의 bandwidth 값을 estimate_bandwidth()로 계산 한 뒤에 다시 군집화 수행' 차례입니다.

noname.png

첨부 사진상 ln [16] 아래서 세번째 meanshift= MeanShift(best_bandwidth)를 제거하면 오류없이 강의와 같은 결과 [0 1 2]를 출력하기는 합니다.

그런데 이게
meanshift= MeanShift(bandwidth=best_bandwidth)를 삭제 했기 때문에 그 전에 실행한
meanshift= MeanShift(bandwidth=1)
때문에 나온 결과인 것 같습니다.
즉, bandwidth=1.689가 아닌 bandwidth=1로 적용된 것 같습니다.

이 때문인지 이후 시행되는 '군집별 중심 시각화'에서도 meanshift_label이 0과 1이 switch 되었습니다.
또한 meanshift_label 2의 데이터 하나가 0 쪽으로 클러스터링 되기도 했습니다.
print(clusterDF.groupby('target')['meanshift_label'].value_counts())의 결과입니다. (target 2의 meanshift_label이 65+1=66이 아닌 66임)
target meanshift_label
0 0 67
1 2 67
2 1 66
Name: meanshift_label, dtype: int64

오류 없이 meanshift= MeanShift(bandwidth=best_bandwidth)를 제대로 적용하려면 어떻게 해야 할까요? 설치할 때 기억은 잘 안나지만 version을 통일하라 강조하신 것 외 다른 설치 파일은 2023년 4월 설치했기 때문에 version이 다를 수 있습니다.

 

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 강의 내용을 질문할 경우 몇분 몇초의 내용에 대한 것인지 반드시 기재 부탁드립니다.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

답변 2

0

sklearn 버전 1.1.0에서 같은 오류가 발생했는데, 아래와 같이 입력하여 해결하였습니다.

meanshift= MeanShift(bandwidth=best_bandwidth)

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

음, 지금 실습 노트북 수행을 ln [13]을 하시고, 그 위의 cell이 ln[16]으로 되어 있는 걸로 봐서는 셀을 순차적으로 수행하지 않으시고, 다시 이전에 수행한 셀을 수행하신것 같습니다만,,

커널을 재 기동하시고, 순차적으로 셀을 다시 수행해 보시기 바랍니다.

그리고 적어주신 오류 내용이 잘 이해가 되지 않습니다.

meanshift= MeanShift(bandwidth=best_bandwidth)를 삭제 했기 때문에 그 전에 실행한
meanshift= MeanShift(bandwidth=1)
때문에 나온 결과인 것 같습니다. 라는 부분이 순차적으로 실행하지 않고 실행을 하시다가 뭔가 MeanShit.__init__ 오류가 발생한게 문제라는 건지요? 실습 노트북을 셀을 순차적으로 수행하게 되어 있습니다.

조금 더 상세하게 오류 내용을 기재해 주십시요.

그리고 sklearn 버전도 부탁드립니다.

import sklearn

print(sklearn.__version__)

 

감사합니다.

 

iixnim님의 프로필 이미지
iixnim

작성한 질문수

질문하기