Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- node
- 으
- Express
- Unseen
- Jinja2
- 언리얼
- 파이썬서버
- 데이터베이스
- Ajax
- 레베카
- 디자드
- 언리얼뮤지컬
- 미니프로젝트
- 게임개발
- 알고풀자
- 스터디
- 스마일게이트
- R
- 정글사관학교
- EnhancedInput
- JWT
- Bootstrap4
- 카렌
- 마인크래프트뮤지컬
- 프린세스메이커
- 프메
- Enhanced Input System
- flask
- VUE
- 언리얼프로그래머
Archives
- Today
- Total
Today, I will
fetch_california_housing 데이터로 선형 회귀 분석, R² 스코어 본문
Computer Science/인공지능,딥러닝
fetch_california_housing 데이터로 선형 회귀 분석, R² 스코어
Lv.Forest 2024. 9. 27. 20:19from sklearn import linear_model, datasets
import pandas as pd
import seaborn as sns
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
# 데이터 불러오기 (California Housing)
data = datasets.fetch_california_housing()
print(data.keys())
print(data.feature_names)
print(data.target_names)
df = pd.DataFrame(data=data.data, columns=data.feature_names)
df['target'] = data.target
df.head()
# 데이터 통계 확인
df.describe()
print(df.isnull().sum())
df.plot()
sns.pairplot(df)
X_train = data.data
y_train = data.target
# y = wx + b
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
print('used features: {}'.format(np.sum(model.coef_ != 0)))
print(model.score(X_train, y_train)) # 0~1
이 단계에서 0.606232685199805 이 출력되었다.
print(model.score(X_train, y_train)에서 출력된 값은 R² 스코어로,
이 값은 모델이 얼마나 잘 학습되었는지를 평가하는 지표 중 하나로, 0과 1 사이의 값을 가진다.
R² 스코어란?
- R² 스코어 (결정 계수): 이 값은 모델이 데이터를 얼마나 잘 설명하는지를 나타낸다.
- 1: 모델이 데이터를 완벽하게 설명한다는 의미.
- 0: 모델이 데이터를 전혀 설명하지 못한다는 의미.
- 음수: 모델이 무의미하며, 평균값을 예측하는 것보다도 나쁘다는 의미.
현재 스코어 0.606에 대한 의미
- 현재 모델의 R² 스코어가 0.606이므로, 이 모델은 약 **60.6%**의 데이터를 설명할 수 있다는 의미이다. 즉, 이 모델이 예측하는 값과 실제 데이터 간에 어느 정도의 일치도가 있지만, 40% 정도는 예측하지 못하고 있다는 뜻이다.
- 회귀 문제에서 R² 스코어가 0.6 이상이면, 모델이 어느 정도 괜찮게 작동하고 있음을 의미하지만 더 좋은 성능을 위해서는 모델을 개선할 여지가 있다.
왜 1이 아닌가?
- 데이터의 복잡성: 선형 회귀는 입력과 출력 간에 직선 관계가 있다고 가정한다. 하지만 실제 데이터는 복잡한 비선형 관계일 수 있다. fetch_california_housing 데이터는 주택 가격을 예측하는 문제인데, 단순한 선형 모델로는 모든 변수를 잘 설명하기 어려울 수 있다.
- 과소적합(Underfitting): 현재 선형 회귀 모델은 데이터의 패턴을 충분히 학습하지 못했을 수 있다. 더 복잡한 모델(예: Ridge, Lasso, ElasticNet)을 사용해보면 성능이 개선될 수 있다.
- 데이터에 잡음이 포함: 주택 가격은 다양한 외부 요인에 영향을 받을 수 있다. 예를 들어, 경제 상황, 금리, 위치 등의 다양한 변수들이 모델에서 완전히 설명되지 않았을 수 있다.
다음 단계
- 더 복잡한 회귀 모델 사용: Ridge, Lasso 같은 규제 회귀 모델을 사용하면 성능이 더 나아질 수 있다.
- 비선형 모델 사용: 결정 트리(Decision Tree)나 랜덤 포레스트(Random Forest) 같은 모델은 비선형 데이터에 더 적합할 수 있다.
- 특성 엔지니어링: 주어진 특성에서 더 중요한 정보를 추출하거나 새로운 특성을 추가해 모델 성능을 높일 수 있다.
현재 점수가 나쁘지는 않지만, 더 높은 R² 스코어를 얻으려면 다양한 회귀 모델을 시도해보고 데이터를 분석하는 추가 작업이 필요할 수 있다.
'Computer Science > 인공지능,딥러닝' 카테고리의 다른 글
역전파(backpropagation) (1) | 2024.10.04 |
---|---|
캐글에서 데이터를 가져오기 (1) | 2024.09.30 |
회귀 분석(LinearRegression model) (1) | 2024.09.27 |
seaborn pairplot를 사용하여 그래프 그려보고 분석하기 (0) | 2024.09.26 |
stable-diffusion-webui 시작하기 (0) | 2024.08.30 |