728x90
데이터 수집
www.kaggle.com/mirichoi0218/insurance
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
'파이썬 머신러닝' 카테고리의 다른 글
[ML/AI][SimpleRNN with Keras] (2) | 2022.09.20 |
---|---|
[머신러닝][교차검증, 파라미터 튜닝] (0) | 2021.05.02 |
[머신러닝][Deep learning을 이용한 XOR문제해결] (0) | 2021.02.14 |
[머신러닝][Classification 알고리즘 실습-Mushroom Classification] (0) | 2021.02.14 |
[머신러닝][Linear Regression알고리즘 파이썬으로 구현] (1) | 2021.02.12 |