'<=' not supported between instances of 'method' and 'int' 에러가 발생합니다.
선생님 안녕하세요.
머신러닝 강의 정말 잘 듣고 있습니다.
다만 에러 메세지와 관련하여 질문이 생겨서 글을 남깁니다.
'<=' not supported between instances of 'method' and 'int' 이 에러가 발생하는데,
'Age' 값을 비교하여 'Age_cat'을 저장하는 lambda 구문에서 type이 일치하지 않아 에러가 발생하는 것 같습니다.
선생님께서 주신 코드와 강의를 pycharm 개발환경에서 함께 적으면서 똑같이 따라가는 중인데 이 점에서 에러가 발생합니다. 혹시 제가 잘못 이해한게 있을까요?
코드는 아래와 같습니다.
'''
1. Null 처리
2. 불필요속성 제거
3. 레이블 인코딩 수행
4. 결정트리, 랜덤포레스트, 로지스틱 회귀 학습 비교
5. KFold 교차 검증
6. cross_val_score(), GridSearchCV() 수행
'''
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
titanic_df = pd.read_csv('titanic_train.csv')
print(titanic_df.head(3))
'''
Passengerid: 탑승자 아이디
survived: 생존여부, 0: 사망, 1: 생존
Pclass: 티켓 선실 등급, 1: 일등석, 2: 이등석, 3: 삼등석
sex: 탑승자 성별
name: 탑승자 이름
Age: 탑승자 나이
sibsp: 같이 탑승한 형제자매 또는 배우자 인원 수
parch: 같이 탑승한 부모님 또는 어린이 인원수
ticket: 티켓번호
fare: 지불 운임
cabin: 선실번호
embarked: 중간 정착 항구 C: Cherbourg, Q: Queenstown, S: Southampton
'''
print('\n ###타이타닉 데이터 정보###\n')
print(titanic_df.info()) #Age, Cabin, embarked의 특정 row에 NULL값이 포함된다.
titanic_df['Age'].fillna(titanic_df['Age'].mean, inplace=True)
titanic_df['Cabin'].fillna('N', inplace = True)
titanic_df['Embarked'].fillna('N', inplace=True)
print('데이터 세트 NULL 개수: ', titanic_df.isnull().sum().sum())
print('칼럼 별 데이터 세트 NULL 개수:\n', titanic_df.isnull().sum())
#각 object(not number)칼럼별 분포 확인
print(' Sex 값 분포:\n', titanic_df['Sex'].value_counts())
print('\n Cabin값 분포: \n', titanic_df['Cabin'].value_counts())
print('\n Embarked값 분포: \n', titanic_df['Embarked'].value_counts())
#cabin(선실번호)의 첫 알파벳만 tokenize해 titanic_df['Cabin']에 저장
titanic_df['Cabin'] = titanic_df['Cabin'].str[:1]
print(titanic_df['Cabin'].head(3))
print(type(titanic_df['Cabin']))
print(titanic_df['Cabin'].value_counts())
# Survived와 Sex로 groupby한 후 'Survived' 칼럼 count만 출력.
print(titanic_df.groupby(['Survived','Sex'])['Survived'].count())
# 막대 분포 찍기 (->여성 생존자가 더 많음)
sns.barplot(x='Sex', y='Survived', data=titanic_df)
sns.barplot(x='Pclass', y='Survived', hue='Sex', data=titanic_df)
# age에 따라 구분 값을 반환하는 함수 설정(DataFrame의 람다식에 사용)
def get_category(age):
cat = ''
if age <= -1:
cat = 'Unknown'
elif age <= 5:
cat = 'Baby'
elif age <= 12:
cat = 'Child'
elif age <= 18:
cat = 'Teenager'
elif age <= 25:
cat = 'Student'
elif age <= 35:
cat = 'Young Adult'
elif age <= 60:
cat = 'Adult'
else:
cat = 'Elderly'
return cat
# 막대그래프의 크기 figure를 더 크게 설정
plt.figure(figsize=(10, 6))
# X축의 값을 순차적으로 표시하기 위한 설정
group_names = ['Unknown', 'Baby', 'Child', 'Teenager', 'Student',
'Young Adult', 'Adult', 'Elderly']
# get_category(X)는 입력값으로 'Age' 컬럼값을 받아서 해당하는 Age_cat 반환
titanic_df['Age_cat'] = titanic_df['Age'].apply(lambda x : get_category(x))
답변 1
1
안녕하십니까,
titanic_df['Age'].fillna(titanic_df['Age'].mean, inplace=True) 에서 titanic_df['Age'].mean() 로 적용 부탁드립니다. mean()함수가 호출되지 않고 mean 객체로 할당이 되어서 Age 컬럼이 object로 타입이 변경되어 발생하는 에러 입니다.
감사합니다.
안녕하세요 열심히 수강중인 학생입니다
0
60
2
정수 인덱싱
0
68
2
넘파이 오류
0
85
2
11강 numpy의 axis 축 질문 드립니다.
0
85
2
Kaggle 에서 Santander customer satisfaction data 를 다운로드 되지가 않습니다.
0
78
2
Feature importances 를 보여주는 barplot 이 그래프로 안보여져요.
0
70
2
타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.
0
75
2
타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.
0
64
2
5강 강의 오류가 있어요.
0
84
1
실무에서 LTV 관련 모델 선택 질문입니다!
0
72
2
14강 강의 듣는중에 궁금한게 있어서 질문합니다~
0
69
3
파이썬 다운그레이 후 사이킷런 재설치
0
117
2
좋은 강의 감사합니다.
0
72
2
scoring 함수 음수값
0
67
2
6번 강의에 사이킷런, 파이썬, 아나콘다 각각 버전 일치 안 시키고 진행해도 강의 따라가 지나요?
0
100
2
분류 평가 정확도 예측
0
76
2
안녕하세요. 강의 들으면서 업무에 적용하고 싶은 수강생입니다.
0
98
1
카카오톡 채널 있나요
0
106
1
혹시 강의에서 사용하시는 ppt 받을 수 있는건가요
0
189
2
pca 스케일링 관련하여 질문드립니다.
0
100
2
주피터 대신 구글 코랩
0
172
2
강의에서 사용하는 pdf or ppt자료는 따로 없는 건가요?
0
147
2
실루엣 스코어..
0
84
2
float64 null 값 처리 방법
0
102
2





