빅분기 3회 실기기출
# 작업형 1유형
# 1. 데이터 중 결측치가 있는 경우 해당 데이터의 행을 모두 제거하고, 첫번째 행부터 순서대로 70%까지의 데이터를 훈련 데이터로 추출한 데이터 세트를 구성한다.
# 변수 중 'housing_median_age'의 Q1(제1사분위수) 값을 정수로 계산하시오.
# print(df.shape)
# print(df.isnull().sum())
# 결측치 제거
df = df.dropna()
# print(df.isnull().sum())
# print(df.shape)
# print(len(df))
# 첫번째 행부터 순서대로 70%까지의 데이터 추출
# print(len(df))
# print(len(df)*0.7)
train = df.iloc[:int(len(df)*0.7)]
# print(len(train))
# housing_median_age의 제1사분위수 구하기
print(int(train['housing_median_age'].quantile(0.25)))
# 정답 : 19
# 작업형 1유형
# 2. 2000년도의 평균값보다 더 큰 유병률 값을 가진 국가의 수 계산
# print(df.head())
cond = df['year'] == 2000
df2000 = df[cond].drop('year', axis = 1) # 2000년도의 데이터를 추출하면서 year 컬럼 제거
# print(df2000.head())
df2000.index = ['value'] # 컬럼명 짓기
df2000 = df2000.T # 행열 바꾸기
# print(df2000.head(20))
cond = df2000['value'].mean() # 2000년도의 평균값 구하기
# print(cond)
cnt = df2000['value'] > cond # 유병률이 평균값보다 큰 조건
print(len(df2000[cnt]))
# 정답 : 76
# 작업형 1유형
# 3. 주어진 데이터 세트의 컬럼 중 빈 값 또는 결측치를 확인하여, 결측치의 비율이 가장 높은 변수명을 출력하시오
# print(df.isnull().sum())
df_nan = df.isnull().sum().reset_index()
# print(df_nan.head())
df_nan.columns = ['value', 'cnt']
# print(df_nan.head())
# print(df_nan['cnt'].max())
cond = df_nan['cnt'] == df_nan['cnt'].max()
print(df_nan.loc[cond, 'value'].values[0])
# 작업형 2유형
# 고객별 여행보험 가입할 확률
# 0:가입 X, 1:가입 O
# 가장 높은 Accuracy 값을 가지는 최종 모델 도출
# print(train.shape, test.shape)
# EDA
# print(train.head()) #ID 포함, 타겟 : TravelInsurance
# print(test.head()) #ID 포함
# print(train.describe())
# print(train.info()) #object형 4개
# 결측치 확인
# print(train.isnull().sum()) # 없음
# print(test.isnull().sum()) # 없음
# 타겟 분리
target = train.pop('TravelInsurance')
train = train.drop('ID', axis = 1)
test_id = test.pop('ID')
# print(train.shape, test.shape, target.shape, test_id.shape)
# object 라벨 인코딩
cols = train.select_dtypes(include = 'object')
# print(cols)
from sklearn.preprocessing import LabelEncoder
for col in cols :
le = LabelEncoder()
train[col] = le.fit_transform(train[col])
test[col] = le.transform(test[col])
# print(train.info(), test.info())
# 모델 학습 및 평가
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(random_state = 2023)
model.fit(train, target)
pred = model.predict_proba(test)
# print(pred)
# 데이터프레임 생성 및 제출
pd.DataFrame({
'index' : test.index,
'TravelInsurance' : pred[:,1]
}).to_csv('0000.csv', index = False)
print(pd.read_csv('0000.csv'))
'빅데이터 & 인공지능' 카테고리의 다른 글
빅분기 5회 실기 기출 (0) | 2023.07.02 |
---|---|
빅분기 4회 실기 기출 (0) | 2023.07.02 |
빅분기2회 실기 기출 (0) | 2023.07.02 |
[머신러닝알고리즘] 주성분분석(PCA) (0) | 2023.07.01 |
[머신러닝알고리즘] K-평균 군집화(K Means Clustering) (0) | 2023.07.01 |