연차별 연봉 예측하기
Kaggle 환경 설정
import os
os.environ['KAGGLE_USERNAME'] = 'name' # username
os.environ['KAGGLE_KEY'] = 'key' # key
Dataset 다운로드
!kaggle datasets download -d rsadiq/salary
!unzip salary.zip
라이브러리 imprt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam, SGD
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
df = pd.read_csv('Salary.csv')
df.head(5)

print(df.shape)
> (35, 2)
Dataset 확인
sns.pairplot(df, x_vars=['YearsExperience'],y_vars=['Salary'])

Dataset 가공
x_data = np.array(df['YearsExperience'], dtype=np.float32)
y_data = np.array(df['Salary'], dtype=np.float32)
print(x_data.shape)
> (35, )
print(y_data.shape)
> (35, )
x_data = x_data.reshape((-1,1))
y_data = y_data.reshape((-1,1))
print(x_data.shape)
> (35, 1)
print(y_data.shape)
> (35, 1)
학습데이터, 검증데이터 분할
x_train, x_val, y_train, y_val = train_test_split(x_data, y_data, test_size = 0.2, random_state=2022)
print(x_train.shape, x_val.shape)
> (28, 1), (7, 1)
print(y_train.shape, y_val.shape)
> (28, 1), (7, 1)
학습
model = Sequential([
Dense(1)
])
model.compile(loss='mean_squared_error', optimizer=SGD(lr=0.01))
model.fit(
x_train,
y_train,
validation_data = (x_val, y_val),
epochs = 100
)
Epoch 1/100
1/1 [==============================] - 0s 319ms/step - loss: 8181468672.0000 - val_loss: 269741728.0000
Epoch 2/100
1/1 [==============================] - 0s 21ms/step - loss: 248478848.0000 - val_loss: 184379520.0000
Epoch 3/100
1/1 [==============================] - 0s 20ms/step - loss: 221218336.0000 - val_loss: 185760976.0000
Epoch 4/100
1/1 [==============================] - 0s 20ms/step - loss: 219468896.0000 - val_loss: 183834080.0000
Epoch 5/100
1/1 [==============================] - 0s 19ms/step - loss: 217816464.0000 - val_loss: 182118672.0000
Epoch 6/100
1/1 [==============================] - 0s 21ms/step - loss: 216178928.0000 - val_loss: 180410000.0000
Epoch 7/100
1/1 [==============================] - 0s 22ms/step - loss: 214556112.0000 - val_loss: 178719200.0000
Epoch 8/100
1/1 [==============================] - 0s 20ms/step - loss: 212947552.0000 - val_loss: 177045648.0000
Epoch 9/100
1/1 [==============================] - 0s 22ms/step - loss: 211353424.0000 - val_loss: 175389184.0000
Epoch 10/100
1/1 [==============================] - 0s 21ms/step - loss: 209773536.0000 - val_loss: 173749504.0000
Epoch 11/100
1/1 [==============================] - 0s 23ms/step - loss: 208207584.0000 - val_loss: 172126720.0000
Epoch 12/100
1/1 [==============================] - 0s 23ms/step - loss: 206655696.0000 - val_loss: 170520352.0000
Epoch 13/100
1/1 [==============================] - 0s 19ms/step - loss: 205117520.0000 - val_loss: 168930560.0000
Epoch 14/100
1/1 [==============================] - 0s 29ms/step - loss: 203593072.0000 - val_loss: 167357056.0000
Epoch 15/100
1/1 [==============================] - 0s 21ms/step - loss: 202082208.0000 - val_loss: 165799680.0000
Epoch 16/100
1/1 [==============================] - 0s 26ms/step - loss: 200584848.0000 - val_loss: 164258016.0000
Epoch 17/100
1/1 [==============================] - 0s 24ms/step - loss: 199100720.0000 - val_loss: 162732496.0000
Epoch 18/100
1/1 [==============================] - 0s 21ms/step - loss: 197629872.0000 - val_loss: 161222448.0000
Epoch 19/100
1/1 [==============================] - 0s 21ms/step - loss: 196172112.0000 - val_loss: 159727904.0000
Epoch 20/100
1/1 [==============================] - 0s 30ms/step - loss: 194727296.0000 - val_loss: 158248704.0000
Epoch 21/100
1/1 [==============================] - 0s 20ms/step - loss: 193295312.0000 - val_loss: 156784816.0000
Epoch 22/100
1/1 [==============================] - 0s 20ms/step - loss: 191876112.0000 - val_loss: 155335968.0000
Epoch 23/100
1/1 [==============================] - 0s 21ms/step - loss: 190469536.0000 - val_loss: 153902000.0000
Epoch 24/100
1/1 [==============================] - 0s 24ms/step - loss: 189075536.0000 - val_loss: 152482896.0000
Epoch 25/100
1/1 [==============================] - 0s 25ms/step - loss: 187693936.0000 - val_loss: 151078480.0000
Epoch 26/100
1/1 [==============================] - 0s 24ms/step - loss: 186324528.0000 - val_loss: 149688400.0000
Epoch 27/100
1/1 [==============================] - 0s 22ms/step - loss: 184967424.0000 - val_loss: 148312832.0000
Epoch 28/100
1/1 [==============================] - 0s 23ms/step - loss: 183622368.0000 - val_loss: 146951440.0000
Epoch 29/100
1/1 [==============================] - 0s 25ms/step - loss: 182289232.0000 - val_loss: 145604224.0000
Epoch 30/100
1/1 [==============================] - 0s 47ms/step - loss: 180968064.0000 - val_loss: 144270864.0000
Epoch 31/100
1/1 [==============================] - 0s 26ms/step - loss: 179658592.0000 - val_loss: 142951392.0000
Epoch 32/100
1/1 [==============================] - 0s 23ms/step - loss: 178360752.0000 - val_loss: 141645696.0000
Epoch 33/100
1/1 [==============================] - 0s 22ms/step - loss: 177074512.0000 - val_loss: 140353392.0000
Epoch 34/100
1/1 [==============================] - 0s 27ms/step - loss: 175799696.0000 - val_loss: 139074608.0000
Epoch 35/100
1/1 [==============================] - 0s 32ms/step - loss: 174536272.0000 - val_loss: 137809056.0000
Epoch 36/100
1/1 [==============================] - 0s 29ms/step - loss: 173284000.0000 - val_loss: 136556848.0000
Epoch 37/100
1/1 [==============================] - 0s 22ms/step - loss: 172042976.0000 - val_loss: 135317712.0000
Epoch 38/100
1/1 [==============================] - 0s 21ms/step - loss: 170812944.0000 - val_loss: 134091344.0000
Epoch 39/100
1/1 [==============================] - 0s 20ms/step - loss: 169593904.0000 - val_loss: 132877880.0000
Epoch 40/100
1/1 [==============================] - 0s 25ms/step - loss: 168385712.0000 - val_loss: 131677128.0000
Epoch 41/100
1/1 [==============================] - 0s 24ms/step - loss: 167188224.0000 - val_loss: 130488832.0000
Epoch 42/100
1/1 [==============================] - 0s 20ms/step - loss: 166001424.0000 - val_loss: 129313176.0000
Epoch 43/100
1/1 [==============================] - 0s 21ms/step - loss: 164825232.0000 - val_loss: 128149616.0000
Epoch 44/100
1/1 [==============================] - 0s 31ms/step - loss: 163659408.0000 - val_loss: 126998360.0000
Epoch 45/100
1/1 [==============================] - 0s 27ms/step - loss: 162504064.0000 - val_loss: 125859224.0000
Epoch 46/100
1/1 [==============================] - 0s 20ms/step - loss: 161358992.0000 - val_loss: 124732072.0000
Epoch 47/100
1/1 [==============================] - 0s 21ms/step - loss: 160224032.0000 - val_loss: 123616704.0000
Epoch 48/100
1/1 [==============================] - 0s 21ms/step - loss: 159099216.0000 - val_loss: 122513136.0000
Epoch 49/100
1/1 [==============================] - 0s 25ms/step - loss: 157984416.0000 - val_loss: 121421128.0000
Epoch 50/100
1/1 [==============================] - 0s 23ms/step - loss: 156879584.0000 - val_loss: 120340808.0000
Epoch 51/100
1/1 [==============================] - 0s 28ms/step - loss: 155784544.0000 - val_loss: 119271752.0000
Epoch 52/100
1/1 [==============================] - 0s 27ms/step - loss: 154699248.0000 - val_loss: 118214088.0000
Epoch 53/100
1/1 [==============================] - 0s 24ms/step - loss: 153623632.0000 - val_loss: 117167576.0000
Epoch 54/100
1/1 [==============================] - 0s 21ms/step - loss: 152557584.0000 - val_loss: 116132144.0000
Epoch 55/100
1/1 [==============================] - 0s 21ms/step - loss: 151501056.0000 - val_loss: 115107672.0000
Epoch 56/100
1/1 [==============================] - 0s 23ms/step - loss: 150453824.0000 - val_loss: 114094120.0000
Epoch 57/100
1/1 [==============================] - 0s 20ms/step - loss: 149416016.0000 - val_loss: 113091328.0000
Epoch 58/100
1/1 [==============================] - 0s 24ms/step - loss: 148387408.0000 - val_loss: 112099120.0000
Epoch 59/100
1/1 [==============================] - 0s 22ms/step - loss: 147367968.0000 - val_loss: 111117696.0000
Epoch 60/100
1/1 [==============================] - 0s 24ms/step - loss: 146357600.0000 - val_loss: 110146600.0000
Epoch 61/100
1/1 [==============================] - 0s 26ms/step - loss: 145356240.0000 - val_loss: 109185872.0000
Epoch 62/100
1/1 [==============================] - 0s 25ms/step - loss: 144363840.0000 - val_loss: 108235208.0000
Epoch 63/100
1/1 [==============================] - 0s 20ms/step - loss: 143380176.0000 - val_loss: 107294936.0000
Epoch 64/100
1/1 [==============================] - 0s 23ms/step - loss: 142405280.0000 - val_loss: 106364600.0000
Epoch 65/100
1/1 [==============================] - 0s 24ms/step - loss: 141439120.0000 - val_loss: 105444416.0000
Epoch 66/100
1/1 [==============================] - 0s 24ms/step - loss: 140481536.0000 - val_loss: 104533904.0000
Epoch 67/100
1/1 [==============================] - 0s 21ms/step - loss: 139532448.0000 - val_loss: 103633240.0000
Epoch 68/100
1/1 [==============================] - 0s 25ms/step - loss: 138591840.0000 - val_loss: 102742272.0000
Epoch 69/100
1/1 [==============================] - 0s 25ms/step - loss: 137659648.0000 - val_loss: 101860912.0000
Epoch 70/100
1/1 [==============================] - 0s 22ms/step - loss: 136735696.0000 - val_loss: 100989048.0000
Epoch 71/100
1/1 [==============================] - 0s 22ms/step - loss: 135820000.0000 - val_loss: 100126520.0000
Epoch 72/100
1/1 [==============================] - 0s 28ms/step - loss: 134912416.0000 - val_loss: 99273344.0000
Epoch 73/100
1/1 [==============================] - 0s 46ms/step - loss: 134012912.0000 - val_loss: 98429328.0000
Epoch 74/100
1/1 [==============================] - 0s 29ms/step - loss: 133121400.0000 - val_loss: 97594600.0000
Epoch 75/100
1/1 [==============================] - 0s 24ms/step - loss: 132237880.0000 - val_loss: 96768776.0000
Epoch 76/100
1/1 [==============================] - 0s 23ms/step - loss: 131362232.0000 - val_loss: 95951832.0000
Epoch 77/100
1/1 [==============================] - 0s 23ms/step - loss: 130494288.0000 - val_loss: 95144080.0000
Epoch 78/100
1/1 [==============================] - 0s 24ms/step - loss: 129634136.0000 - val_loss: 94344784.0000
Epoch 79/100
1/1 [==============================] - 0s 21ms/step - loss: 128781632.0000 - val_loss: 93554288.0000
Epoch 80/100
1/1 [==============================] - 0s 23ms/step - loss: 127936760.0000 - val_loss: 92772480.0000
Epoch 81/100
1/1 [==============================] - 0s 20ms/step - loss: 127099384.0000 - val_loss: 91999104.0000
Epoch 82/100
1/1 [==============================] - 0s 20ms/step - loss: 126269424.0000 - val_loss: 91234224.0000
Epoch 83/100
1/1 [==============================] - 0s 24ms/step - loss: 125446832.0000 - val_loss: 90477784.0000
Epoch 84/100
1/1 [==============================] - 0s 27ms/step - loss: 124631680.0000 - val_loss: 89729392.0000
Epoch 85/100
1/1 [==============================] - 0s 25ms/step - loss: 123823672.0000 - val_loss: 88989400.0000
Epoch 86/100
1/1 [==============================] - 0s 22ms/step - loss: 123022904.0000 - val_loss: 88257488.0000
Epoch 87/100
1/1 [==============================] - 0s 20ms/step - loss: 122229232.0000 - val_loss: 87533584.0000
Epoch 88/100
1/1 [==============================] - 0s 25ms/step - loss: 121442672.0000 - val_loss: 86817592.0000
Epoch 89/100
1/1 [==============================] - 0s 25ms/step - loss: 120663056.0000 - val_loss: 86109544.0000
Epoch 90/100
1/1 [==============================] - 0s 31ms/step - loss: 119890408.0000 - val_loss: 85409472.0000
Epoch 91/100
1/1 [==============================] - 0s 28ms/step - loss: 119124664.0000 - val_loss: 84716840.0000
Epoch 92/100
1/1 [==============================] - 0s 22ms/step - loss: 118365712.0000 - val_loss: 84032128.0000
Epoch 93/100
1/1 [==============================] - 0s 26ms/step - loss: 117613496.0000 - val_loss: 83354808.0000
Epoch 94/100
1/1 [==============================] - 0s 27ms/step - loss: 116868016.0000 - val_loss: 82685000.0000
Epoch 95/100
1/1 [==============================] - 0s 28ms/step - loss: 116129128.0000 - val_loss: 82022896.0000
Epoch 96/100
1/1 [==============================] - 0s 24ms/step - loss: 115396920.0000 - val_loss: 81367920.0000
Epoch 97/100
1/1 [==============================] - 0s 23ms/step - loss: 114671144.0000 - val_loss: 80720152.0000
Epoch 98/100
1/1 [==============================] - 0s 28ms/step - loss: 113951792.0000 - val_loss: 80079736.0000
Epoch 99/100
1/1 [==============================] - 0s 27ms/step - loss: 113238904.0000 - val_loss: 79446568.0000
Epoch 100/100
1/1 [==============================] - 0s 37ms/step - loss: 112532352.0000 - val_loss: 78820328.0000
<keras.callbacks.History at 0x7f5945c79250>
검증 데이터로 예측하기
y_pred = model.predict(x_val)
plt.scatter(x_val, y_val)
plt.scatter(x_val, y_pred, color='r')
plt.show()
