작성
·
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
0
제가 코랩에서 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)))
해결이 되어서 다행입니다. ^^