π Salary - μ°μ°¨μ λ°λ₯Έ μ°λ΄ λ³νλ
μ°μ°¨κ° μ λ ₯μΌλ‘ λ€μ΄κ°κ³ μ°λ΄μ΄ μΆλ ₯μΌλ‘ λμ€λ λ¨μΌ μ ν ννλ‘ μ¬μ΄νΈμ μνλ€.
λ μ²μν΄λ΄μ μ΄λ ΅λ€...
π
import os os.environ['KAGGLE_USERNAME'] = 'carrotww' # username os.environ['KAGGLE_KEY'] = # kaggle_keyλ λ³ΈμΈ ν€λ₯Ό λΆμ¬μ νμ μ¬μ©νλ©΄ λλ€. !kaggle datasets download -d rsadiq/salary # ν΄λΉ λ°μ΄ν°λ₯Ό λ€μ΄λ‘λ ν ν !unzip salary.zi # μμΆμ νμ΄μ€λ€. 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') # μμΆμ νμ΄μ€ νμΌμ pandasμ read_csv ν¨μλ‘ # μ½μ΄μ dfμ μ μ₯ df.tail(5)
x_data = np.array(df['YearsExperience'], dtype=np.float32) # x dataλ μ°μ°¨λ₯Ό λ£μ΄ numpy arrayλ‘ λ³κ²½ν΄ μ£Όλ©° # λ¨Έμ λ¬λ νμ΅μμλ λλΆλΆ float μλ£νμΌλ‘ μ¬μ© y_data = np.array(df['Salary'], dtype=np.float32) x_data = x_data.reshape((-1, 1)) y_data = y_data.reshape((-1, 1)) # λ°μ΄ν°κ° ν κ° μ΄λ―λ‘ 1 μ λ£μ΄μ€λ€. print(x_data.shape) print(y_data.shape) x_train, x_val, y_train, y_val = train_test_split(x_data, y_data, test_size=0.2, random_state=2021) # test setμ 20%λ‘ λλμ΄ μ€λ€ print(x_train.shape, x_val.shape) print(y_train.shape, y_val.shape) model = Sequential([ Dense(1) ]) # ν΄λΉ λͺ¨λΈμ μ ν νκ·λ‘ λ§λ€μ΄μ€ model.compile(loss='mean_squared_error', optimizer=SGD(lr=0.01)) # optimizerλ SGD learning rate λ 0.01 λ‘ μ¬μ© # optimizerλ μλ΄μΌλ‘λ λ³κ²½ κ°λ₯ model.fit( x_train, y_train, validation_data=(x_val, y_val), # κ²μ¦ λ°μ΄ν°λ₯Ό λ£μ΄μ£Όλ©΄ ν epochμ΄ λλ λλ§λ€ μλμΌλ‘ κ²μ¦ epochs=100 # epochs 볡μνμΌλ‘ # fitμ νμ¬ νμ΅μ μμΌμ€ y_pred = model.predict(x_val) # x_val λ°μ΄ν°λ₯Ό μμΈ‘νμ¬ y_predμ λ£μ΄μ€ plt.scatter(x_val, y_val) plt.scatter(x_val, y_pred, color='r') # μμΈ‘ν κ°μ red λ‘ κ·Έλ €μ€ plt.show()
π λ Όλ¦¬ νκ·λ ?
μ½κ² λ§ν΄ μ ν νκ·λ‘ ν μ μλ λ¬Έμ λ₯Ό νκΈ° μν΄ logistic(sigmoid) function μ μ¬μ©νλ€.
π λ§μ½ μΆλ ₯ μμΉκ° μ ν΄μ§ κ°μ΄ κΆκΈνλ€λ©΄?
κ°λ Ή ν΅κ³Ό, μ€ν¨ κ°μ True False μ κ°μ κ°μ μ ννκ· κ·Έλνλ‘ νννκΈ° μ΄λ ΅λ€.
μλ₯Ό λ€μ΄ νμ μ΄ μλ pass/fail κ³Όλͺ©μ΄ μμ λ λͺ μκ°μ 곡λΆν΄μΌ passκ° λμ€λμ§ κΆκΈνλ€. 10μκ°μ 곡λΆν΄μΌ passκ° λμ¨λ€λ©΄ 5, 6, 7μκ°μ 곡λΆνμλλ 무쑰건 failμΈκ°?
λ§μ½ κ·Έλ λ€λ©΄ μμ κ°μ κ·Έλνλ‘ λμ¬ κ²μ΄λ€. νμ§λ§ logistic(sigmoid) functionμ μ¬μ©νλ€λ©΄ μλμ κ°μ κ·Έλνλ‘ λμ€κ² λλ€.
ν΄λΉ κ·Έλνμμλ νλ₯ μ λ°λ₯Έ pass/fail μ¬λΆλ₯Ό 50%λ‘ μ νμλ€.
π μ ν νκ·μμμ κ°μ€μ H(x) = Wx + b μμ΄λ©° λ Όλ¦¬ νκ·μμλ μκ·Έλͺ¨μ΄λ ν¨μμ μ ννκ· μμμ λ£μ κ².
μ½κ² κ²°κ³Όκ°μ΄ 0 ~ 1μ΄ λμ€κ² νκ³ μΆμ΄μ λμ¨ κ²μ΄ λ Όλ¦¬ νκ· μ΄λ€. μνμ μΈ λΆλΆ 보λ€λ μ΄ν΄κ° μ€μνκΈ° λλ¬Έμ μμμ pass..γ γ
π λ Όλ¦¬ νκ· κ·Έλνλ₯Ό μμΈ‘ν κ·Έλνλ‘ λ§λ€κΈ° μν΄μ λμμ£Όλ μμ€ ν¨μ μ΄λ€.