작업형 1유형
데이터 출처 :https://www.kaggle.com/mirichoi0218/insurance/code(참고, 데이터 수정)
데이터 설명 : 의료비용 예측문제
Data url :https://raw.githubusercontent.com/Datamanim/datarepo/main/MedicalCost/train.csv
데이터 상위 5개 컬럼
1
2
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/Datamanim/datarepo/main/MedicalCost/train.csv")
Q1. 흡연자와 비흡연자 각각 charges의 상위 10% 그룹의 평균의 차이는?
상위10%를 구하라고 합니다 quantile를 이용해서 특정 값보다 큰 그룹을 구한 다음에 평균을 구하고 빼면 되겠습니다. 흡연자는 smoker에서 no와 yes로 구분하는 군요
1
2
3
4
5
6
smoker = df.loc[(df['smoker']=='yes')].charges.quantile(0.9)
non_smoker = df.loc[(df['smoker']=='no')].charges.quantile(0.9)
A = df.loc[(df['charges']>=smoker)&(df['smoker']=='yes')].charges.mean()
B = df.loc[(df['charges']>=non_smoker)&(df['smoker']=='no')].charges.mean()
print(A-B)
한줄로 만드는 것도 가능은 한데 가독성이 박살날겁니다.
작업형 2유형
데이터 출처 :[https://www.kaggle.com/mirichoi0218/insurance/code](https://www.kaggle.com/mirichoi0218/insurance/code(참고, 데이터 수정)
데이터 설명 : 의료비용 예측문제
평가지표 : r2 score
trainData url : https://raw.githubusercontent.com/Datamanim/datarepo/main/MedicalCost/train.csv
testData url : https://raw.githubusercontent.com/Datamanim/datarepo/main/MedicalCost/test.csv
데이터 상위 5개 컬럼
1
2
3
4
5
6
7
8
9
10
11
12
13
Main_name = 'MedicalCost'
trainData = f'https://raw.githubusercontent.com/Datamanim/datarepo/main/{Main_name}/train.csv'
testData = f'https://raw.githubusercontent.com/Datamanim/datarepo/main/{Main_name}/test.csv'
subData = f'https://raw.githubusercontent.com/Datamanim/datarepo/main/{Main_name}/submission.csv'
#데이터로드
import pandas as pd
train = pd.read_csv(trainData)
test = pd.read_csv(testData)
submission = pd.read_csv(subData)
계속 분류만 나오다가 이번에는 회귀가 나오네요 charges 의료비용 예측 문제입니다. 제 생각에는 이번에는 스케일 처리할 것도 없고 결측치만 확인하고 바로 원핫인코더 쓰고 진행하겠습니다.
1
2
3
4
y = train['charges']
train.drop(columns='charges', inplace=True)
train = pd.get_dummies(train)
test = pd.get_dummies(test)
charges 부분만 빼버리고 나머지는 원핫인코딩을 적용을 해줍시다.
1
2
3
4
5
6
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor()
model.fit(train,y)
summit = pd.DataFrame()
summit['charges'] = model.predict(test)
summit.to_csv('charges_pre.csv', index=False)
따로 성능평가는 없이 마찬가지로 회귀로 가격을 측정하고 저장을 했습니다.
Comments powered by Disqus.