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

choemyeonggeun님의 프로필 이미지
choemyeonggeun

작성한 질문수

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

앙상블 학습의 개요와 보팅(Voting)의 이해

4.3 앙상블학습 실습 데이터 에러

작성

·

523

0

두번째 블록 코드를 수정없이 그대로 실행했는데 오류가 떠서 질문드립니다

AttributeError                            Traceback (most recent call last)
Input In [4], in <cell line: 13>()
     11 # VotingClassifier 학습/예측/평가. 
     12 vo_clf.fit(X_train , y_train)
---> 13 pred = vo_clf.predict(X_test)
     14 print('Voting 분류기 정확도: {0:.4f}'.format(accuracy_score(y_test , pred)))
AttributeError: 'NoneType' object has no attribute 'split'

무엇이 문제일까요??...

 

답변 3

0

pip install threadpoolctl==3.1.0

이코드를 추가하니 해결이 되었습니다! 답변과 좋은 강의 감사합니다 :)!!

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

해결이 되어서 다행입니다. ^^

0

커널 재가동해보고 코드도 한 곳에 몰아서 해봤는데도 안되네요.. ㅜㅜ

sklearn 버전은 1.2.2 입니다 ! 자꾸 여쭤봐서 죄송합니다 ㅜ

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

제가 코랩에서 sklearn 1.2.2 버전에서 수행해 보았는데, 별 문제가 없습니다.

코랩에서 한번 수행해 보시겠습니까?

코랩에서 잘 되는데 PC에서 잘 안되면 뭔가 설치가 잘못 된것 같습니다.

pip install sklearn==1.0.3 으로 downgrade 하여 설치해 주시고, 다시 테스트 부탁드립니다.

확인후 글 업데이트 부탁드립니다.

0

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

안녕하십니까,

음, 저는 별 문제가 없는 코드인데....

일단 아래와 같이 vo_clf와 X_test의 type이 어떻게 되는지 확인해 주시겠습니까?

print(type(vo_clf)

print(type(X_test))


넵 타입은 아래와 같습니다 !

# type(vo_clf)
# sklearn.ensemble._voting.VotingClassifier

# type (X_test)
# numpy.ndarray
권 철민님의 프로필 이미지
권 철민
지식공유자

문제가 없어야 하는 코드 인데요..

커널을 재 기동 해보시고, 이전에는 2개의 cell로 되어 있던 것을 1개의 cell로 다 옮겨서 다시 한번 수행해 보십시요. 혹 여전히 안되면 설치하신 scikit learn 버전을 알려 주십시요.

import pandas as pd

from sklearn.ensemble import VotingClassifier

from sklearn.linear_model import LogisticRegression

from sklearn.neighbors import KNeighborsClassifier

from sklearn.datasets import load_breast_cancer

from sklearn.model_selection import train_test_split

from sklearn.metrics import accuracy_score

cancer = load_breast_cancer()

data_df = pd.DataFrame(cancer.data, columns=cancer.feature_names)

# 개별 모델은 로지스틱 회귀와 KNN 임.

lr_clf = LogisticRegression()

knn_clf = KNeighborsClassifier(n_neighbors=8)

# 개별 모델을 소프트 보팅 기반의 앙상블 모델로 구현한 분류기

vo_clf = VotingClassifier( estimators=[('LR',lr_clf),('KNN',knn_clf)] , voting='soft' )

X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target,

test_size=0.2 , random_state= 156)

# VotingClassifier 학습/예측/평가.

vo_clf.fit(X_train , y_train)

pred = vo_clf.predict(X_test)

print('Voting 분류기 정확도: {0:.4f}'.format(accuracy_score(y_test , pred)))

# 개별 모델의 학습/예측/평가.

classifiers = [lr_clf, knn_clf]

for classifier in classifiers:

classifier.fit(X_train , y_train)

pred = classifier.predict(X_test)

class_name= classifier.__class__.__name__

print('{0} 정확도: {1:.4f}'.format(class_name, accuracy_score(y_test , pred)))

choemyeonggeun님의 프로필 이미지
choemyeonggeun

작성한 질문수

질문하기