S06L03 – 파이썬에서 선형 회귀 구현 – 2부

html

Python에서 선형 회귀 구현 및 평가: 종합 가이드

선형 회귀

선형 회귀 소개

선형 회귀는 머신러닝과 데이터 분석에서 가장 기본적이고 널리 사용되는 알고리즘 중 하나입니다. 이는 관측된 데이터에 선형 방정식을 적합시켜 종속 변수와 하나 이상의 독립 변수 간의 관계를 모델링합니다. 이 가이드에서는 scikit-learn 라이브러리를 사용하여 Python에서 선형 회귀를 구현하고 실제 결과와 예측 결과를 비교하며, R-제곱 지표를 사용하여 모델의 성능을 평가하는 과정을 안내합니다.

데이터 과학에 열정을 가진 분이든 숙련된 전문가이든, 이 포괄적인 튜토리얼은 선형 회귀 모델을 효과적으로 구축하고 평가하는 데 필요한 지식과 실용적인 기술을 제공할 것입니다.

목차

  1. 데이터셋 개요
  2. 환경 설정
  3. 필요한 라이브러리 가져오기
  4. 데이터 로딩 및 탐색
  5. 데이터 시각화
  6. 훈련을 위한 데이터 준비
  7. 선형 회귀 모델 구축
  8. 예측 수행
  9. 실제 결과와 예측 결과 비교
  10. R-제곱으로 모델 평가
  11. 결론
  12. 추가 읽을 거리

데이터셋 개요

이 튜토리얼에서는 Kaggle의 Canada Per Capita Income 데이터셋을 사용할 것입니다. 이 데이터셋은 여러 해에 걸친 캐나다의 연간 1인당 소득 정보를 제공하여 소득 추세를 분석하고 예측 모델을 구축할 수 있게 해줍니다.

환경 설정

코드 작업을 시작하기 전에 시스템에 Python이 설치되어 있는지 확인하세요. 프로젝트 종속성을 관리하기 위해 가상 환경을 사용하는 것이 권장됩니다. venv 또는 conda와 같은 도구를 사용하여 가상 환경을 설정할 수 있습니다.

필요한 라이브러리 가져오기

데이터 조작, 시각화 및 회귀 모델 구축에 필요한 필수 라이브러리를 가져오는 것부터 시작하겠습니다.

데이터 로딩 및 탐색

다음으로, 데이터셋을 Pandas DataFrame에 로드하고 그 구조를 예비적으로 살펴보겠습니다.

출력:

출력에서 데이터셋이 두 개의 열을 포함하고 있음을 알 수 있습니다: yearper capita income (US$).

데이터 시각화

시각화는 데이터 내의 기본적인 패턴과 관계를 이해하는 데 도움이 됩니다. 연도와 1인당 소득 간의 관계를 시각화하기 위해 산점도를 생성할 것입니다.

산점도

산점도는 연도에 따라 1인당 소득이 증가하는 추세를 보여줍니다. 그러나 관계가 완벽하게 선형적이지 않을 수 있어 데이터에 잠재적인 변동성이 있음을 나타냅니다.

훈련을 위한 데이터 준비

모델을 훈련시키기 전에 특성(독립 변수)과 타겟 변수(종속 변수)를 분리하여 데이터를 준비해야 합니다.

이 경우, Xyear 열을 포함하고, Yper capita income (US$)를 포함합니다.

선형 회귀 모델 구축

이제 데이터를 훈련 세트와 테스트 세트로 분할하여 보지 않은 데이터에 대한 모델의 성능을 평가하겠습니다.

설명:

  • X_train & y_train: 모델을 훈련하는 데 사용됩니다.
  • X_test & y_test: 모델의 성능을 테스트하는 데 사용됩니다.
  • test_size=0.20: 데이터의 20%가 테스트에 예약됩니다.
  • random_state=1: 분할의 재현성을 보장합니다.

이제 선형 회귀 모델을 인스턴스화하고 훈련시켜봅시다.

출력:

예측 수행

훈련된 모델을 사용하여 테스트 세트에 대한 예측을 수행할 수 있습니다.

출력:

이 값들은 테스트 세트의 입력 연도를 기반으로 한 모델의 1인당 소득 예측값을 나타냅니다.

실제 결과와 예측 결과 비교

모델의 성능을 평가하기 위해 실제 값(y_test)과 예측 값(y_pred)을 비교하겠습니다.

출력:

분석:

  • 좋은 예측: ActualPredicted 값이 가까운 항목은 모델이 잘 작동하고 있음을 나타냅니다.
  • 불일치: 상당한 차이는 모델의 개선이 필요하거나 관계가 완벽하게 선형적이지 않은 영역을 강조합니다.

예를 들어, 대부분의 예측값이 실제 값과 비교적 근접하지만, 실제 값이 4,251.18인 경우와 예측 값이 1,248.95인 경우와 같은 일부 불일치는 모델이 포착하지 못한 변동성을 시사합니다.

R-제곱으로 모델 평가

모델의 성능을 정량적으로 평가하기 위해 R-제곱(R²) 지표를 사용할 것입니다. R-제곱은 모델의 독립 변수(들)에 의해 설명되는 종속 변수의 분산 비율을 나타냅니다.

출력:

해석:

  • 0.80의 R-제곱 값은 연도에 의해 1인당 소득의 분산의 80%가 설명됨을 나타냅니다.
  • 80%는 좋은 적합도를 강하게 나타내지만, 분산의 20%는 모델에서 고려되지 않은 다른 요인이나 데이터 고유의 변동성으로 인해 설명되지 않았음을 의미합니다.

R-제곱 값 이해하기:

  • 1: 완벽한 적합도. 모델이 모든 변동성을 설명합니다.
  • 0: 설명력이 없음. 모델이 어떤 변동성도 설명하지 못합니다.
  • 음수 값: 모델이 수평선(타겟 변수의 평균)보다 더 나쁜 성능을 보임을 나타냅니다.

결론

이 가이드에서는 Python에서 선형 회귀 모델을 성공적으로 구현하여 여러 해에 걸친 캐나다의 1인당 소득을 예측했습니다. 다음 단계를 따르면, 당신은:

  1. 데이터 로드 및 탐색: 데이터셋의 구조와 초기 추세를 이해합니다.
  2. 관계 시각화: 산점도를 사용하여 잠재적인 선형 관계를 식별합니다.
  3. 데이터 준비: 데이터를 훈련 세트와 테스트 세트로 분할하여 편향 없는 평가를 수행합니다.
  4. 모델 구축 및 훈련: scikit-learn의 LinearRegression을 사용하여 모델을 적합시킵니다.
  5. 예측 수행: 훈련된 모델을 사용하여 예측을 생성합니다.
  6. 결과 비교: 예측된 값이 실제 데이터와 얼마나 잘 일치하는지 분석합니다.
  7. 성능 평가: R-제곱을 사용하여 모델의 설명력을 정량화합니다.

모델은 우수한 R-제곱 값을 보여주지만, 개선의 여지가 있습니다. 추가적인 특성을 탐색하거나, 변수를 변환하거나, 더 복잡한 알고리즘을 사용하면 예측 성능을 향상시킬 수 있습니다.

추가 읽을 거리

이 선형 회귀 여정을 시작함으로써 다양한 데이터 기반 도메인에서 적용 가능한 기본 기술을 갖추게 됩니다. 다양한 데이터셋으로 계속 연습하여 머신러닝에 대한 이해와 숙련도를 높이세요.

#LinearRegression #Python #MachineLearning #DataScience #ScikitLearn #R2Score #DataVisualization #PredictiveModeling #PythonTutorial

Share your love