Coding Is My Life

코딩은 인생

파이썬 머신러닝

[머신러닝][kaggle 실습- 보험 비용 예측하기]

산기대 컴공 2021. 2. 23. 23:34
728x90

데이터 수집

www.kaggle.com/mirichoi0218/insurance

 

Medical Cost Personal Datasets

Insurance Forecast by using Linear Regression

www.kaggle.com

import pandas as pd
data = pd.read_csv('/content/drive/MyDrive/insurance.csv')
data.head()

데이터를 불러온다.

 

temp = []
smk = []
for i in range(len(data)):
  if data.iloc[i]['sex'] == 'female':
    temp.append(1)
  elif data.iloc[i]['sex'] == 'male':
    temp.append(0)
  if data.iloc[i]['smoker'] == 'yes':
    smk.append(1)
  else:
    smk.append(0)
data = data.drop(['sex','region','smoker'],axis = 1)
data['sex'] = temp
data['smoker'] = smk
data.head()

데이터를 보면 알겠지만 sex와 smoker은 문자로 되어 있기 때문에 이것을 숫자 (0과 1)로 바꾸어주는 작업을 해주어야 한다. 그리고 지역은 데이터에서 필요 없으므로 그냥 없애준다.

 

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
y = data['charges']
x = data.drop('charges',axis = 1)
scaler = MinMaxScaler()
x = scaler.fit_transform(x)
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.2,random_state = 0)

데이터를 정규화해주고 테스트 케이스를 만들어준다.

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x_train,y_train)
pred = model.predict(x_test)

훈련하고 예측값을 구한다.

from sklearn.metrics import mean_squared_error
print(mean_squared_error(y_test,pred)**0.5)

결괏값 :5671.492452926755

RMSE를 구해보면 다음과 같은 값이 나온다.

plt.figure(figsize = (16,9))
plt.scatter(pred,pred-y_test)
plt.show()

산점도 그래프를 그려 예측값과 원래 데이터의 차이를 보면 0~20000 이전까지는 거의 차이가 0인 것을 볼 수 있는데 그 이후 데이터는 조금씩 오차가 있는 것을 볼 수 있다. 그래도 예측이 나쁘지는 않았다.

728x90