Python/실습

경력과 연봉 관계 분석 하는 인공지능 만들기

qoeka 2025. 1. 24. 21:35

 

 

  • CSV 파일 읽기
    데이터를 pd.read_csv()를 사용해 데이터프레임으로 읽어온다.

 

 

 

 

 

  • 결측치 확인
    데이터에 결측치가 있는지 df.isna().sum()을 통해 확인하며, 이 데이터셋에서는 결측치가 없는 것으로 확인된다.

 

  • 독립변수와 종속변수 설정
    • Salary 열을 **종속변수(y)**로 설정한다.
    • YearsExperience 열을 **독립변수(X)**로 설정하며, .to_frame()을 사용해 데이터프레임 형태로 변환한다.
    y = df['Salary'] X = df['YearsExperience'].to_frame()
     
  • 피처 스케일링(Feature Scaling)
    • 피처 스케일링은 데이터의 범위를 맞춰 모델 학습 시 변수 간의 크기 차이가 결과에 영향을 주지 않도록 한다.
    • 일반적으로 딥러닝 모델에서는 피처 스케일링이 필수적이다.
    • 그러나 선형 회귀(Linear Regression) 모델은 자체적으로 피처 스케일링을 수행하기 때문에, 별도의 스케일링 과정을 추가할 필요가 없다.

 

 

 

 

1.데이터 분리

  • 학습 데이터와 테스트 데이터를 분리하기 위해 train_test_split을 사용한다.
  • test_size=0.2는 데이터를 80% 학습용, 20% 테스트용으로 나눈다는 의미이다.
  • random_state=24를 설정하여 결과를 재현 가능하게 한다.
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=24)

2. 모델 생성

  • LinearRegression 클래스를 사용하여 선형 회귀 모델을 생성한다.
  • fit() 메서드를 사용하여 학습 데이터를 기반으로 모델을 학습시킨다.
from sklearn.linear_model import LinearRegression

regressor = LinearRegression()  # 모델 생성
regressor.fit(X_train, y_train)  # 모델 학습

3. 성능 평가

  • 오차(Erro): 모델의 예측값과 실제값의 차이를 의미한다.

       오차(erro)=원래값−예측값

 

  • 오차 계산 시 발생하는 문제:
    • 오차를 단순히 더하면 양의 값과 음의 값이 상쇄되어 잘못된 결과를 초래할 수 있다.
    • 이를 해결하기 위해 절대값을 사용하거나, 오차를 제곱하여 양수로 만든다.
  • 평균 제곱 오차(MSE):
    • 제곱된 오차의 평균을 계산하며, 일반적으로 성능 평가에 많이 사용된다.

 

 

테스트 데이터 예측

 

regressor.predict()를 사용하여 테스트 데이터(X_test)에 대한 예측값을 생성한다.

 

y_pred = regressor.predict(X_test)  # 예측값 생성

 

오차 계산

 

오차 계산: 실제값(y_test)과 예측값(y_pred)의 차이를 계산한다.

 

y_test - y_pred  # 오차 계산

 

 

오차는 예측값이 실제값에 비해 얼마나 차이가 있는지를 나타낸다.

양수, 음수 값이 모두 포함될 수 있다.

 

오차의 제곱: 단순 오차의 합이 0에 가까워지는 문제를 방지하기 위해 오차를 제곱한다.

(y_test - y_pred) ** 2  # 오차의 제곱

 

평균 제곱 오차(MSE) 계산

 

오차의 제곱값을 평균 내어 모델의 예측 정확도를 평가한다.

 

((y_test - y_pred) ** 2).mean()  # 평균 제곱 오차 계산

 

 

 

 

 

 

위 코드에서는 단일 값 28을 모델이 이해할 수 있는 데이터프레임 형식으로 변환한다.

이로써 입력 데이터의 형식이 모델 학습 시 사용된 형식과 일치하여 예측이 성공적으로 수행된다.

 

 

 

새로운 데이터 입력

  • 입력 데이터를 Numpy 배열로 생성하며, .reshape()를 사용해 (행, 열) 형식으로 조정한다.
 
new_data = np.array([28, 15, 32]).reshape(3, 1)

 

예측 수행

  • regressor.predict()를 사용해 입력 데이터를 기반으로 예측값을 반환한다.
predicted_salaries = regressor.predict(new_data)
print(predicted_salaries)

예측결과
array([294371.5885685, 169106.60572978, 332914.66021119])