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 | 29 | 30 | 31 |
Tags
- pandas
- 머신러닝
- 실기
- Numpy
- level 2
- python3
- 카카오
- 빅데이터 분석 기사
- Python
- 알고리즘
- SQL
- 코딩테스트
- 데이터 분석
- 프로그래머스
- 튜닝
- 실습
- Kaggle
- 오라클
- matplotlib
- sklearn
- 파이썬
- Oracel
- 빅분기
- level 1
- oracle
- R
- seaborn
Archives
- Today
- Total
라일락 꽃이 피는 날
[빅분기 실기] 머신러닝 - 회귀문제 본문
728x90
1. 분석 데이터 검토
# 행과 열 구조 확인
df.shape
# 기술통계 확인
df.describe()
# 히스토그램 확인
df.hist(bins=50, figsize=(20,15))
describe() : 평균과 중위수 일치정도, min/max, 이상치 확인
hist() : 정규분포와 유사한 형태인지 확인
2. 특성(x)과 레이블(y) 나누기
# 컬럼 이름으로 나누기
x = df[['컬럼명1', '컬럼명2', ...]]
# 컬럼 인덱스로 나누기
x = df[df.columns[0:5]]
# loc 함수로 나누기
x = df.loc[:, '컬럼명1':'컬럼명10']
# 목적변수
y = df[['value']]
3. train-test 데이터셋 나누기
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(x, y, random_state=42)
4. 정규화
① Min-Max 정규화 : 최솟값(min)은 모두 0이고, 최댓값(max)은 모두 1이다.
from sklearn.preprocessing import MinMaxScaler
scaler_minmax = MinMaxScaler()
# 학습 데이터로 기준 적용
scaler_minmax.fit(X_train)
# 훈련 데이터 변환
X_scaled_minmax_train = scaler_minmax.transform(X_train)
# 테스트 데이터 변환
X_scaled_minmax_test = scaler_minmax.transform(X_tset)
pd.DataFrame(X_scaled_minmax_train).describe()
② Standard 표준화 : 모든 평균이 0이고, 표준 편차가 1이다.
from sklearn.preprocessing import StandardScaler
scaler_standard = StandardScaler()
scaler_standard.fit(X_train)
X_scaled_standard_train = scaler_standard.transform(X_train)
X_scaled_standard_test = scaler_standard.transform(X_test)
pd.DataFrame(X_scaled_standard_train).describe()
5. 모델 학습
선형 회귀 모델
from sklearn.linear_model import LinearRegression
model = LinearRegression()
# 모델 학습
model.fit(X_scaled_minmax_train, y_train)
# 모델 예측
pred_train = model.predict(X_scaled_minmax_train)
pred_test = model.predict(X_scaled_minmax_test)
# 정확도 확인
model.score(X_scaled_minmax_train, y_train)
model.score(X_scaled_minmax_test, y_test)
모델 평가 - 틀린 정도, 오차 판단
import numpy as np
from sklearn.metrics import mean_squared_error, mean_absolute_error
# MSE
mean_squared_error(y_test, pred_test)
# MAE
mean_absolute_error(y_test, pred_test)
# RMSE
np.sqrt(mean_squared_error(y_test, pred_test))
# MAPE
np.mean(np.abs((y_test - pred_test) / y_test)) * 100
# MPE
np.mean((y_test - pred_test) / y_test) * 100
6. 예측값 병합 및 저장
# 예측 범주 컬럼 추가
y_test[['y_pred']] = pred_test
# 데이터셋 가로 병합
Total_test = pd.concat([X_test, y_test], axis=1)
# csv 파일로 내보내기
Total_test.to_csv('regression_test.csv')
728x90
'데이터 분석 > 빅데이터 분석 기사' 카테고리의 다른 글
[빅분기 실기] K-최근접 이웃법 (KNN) (0) | 2022.06.16 |
---|---|
[빅분기 실기] 로지스틱 회귀 모델 (0) | 2022.06.16 |
[빅분기 실기] 머신러닝 - 분류문제 (0) | 2022.05.22 |
[빅분기 실기] 머신러닝 프로세스 (0) | 2022.05.22 |
[빅분기 실기] 데이터 정제 - 이상치, 결측치 처리 (0) | 2022.05.22 |