- 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])
'Python > 실습' 카테고리의 다른 글
파이썬 : K-Nearest Neighbor (0) | 2025.01.29 |
---|---|
파이썬: 수익 예측 인공지능 만들기 (1) | 2025.01.27 |
파이썬 : 머신러닝, 데이터 프리프로세싱 (3) | 2025.01.24 |
파이썬 : 차트 (0) | 2025.01.24 |
파이썬 : 판다스 데이터 연결 (0) | 2025.01.23 |