1. 와인데이터 불러들이기
2. 랜덤포레스트로 훈련까지(fit)만 수행하기
라이브러리
"""데이터 처리"""
import pandas as pd
import numpy as np
"""데이터 분류"""
from sklearn.model_selection import train_test_split
"""하이퍼파라메터 튜닝"""
from sklearn.model_selection import GridSearchCV
"""사용할 분류모델들"""
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.ensemble import HistGradientBoostingClassifier
from xgboost import XGBClassifier
"""데이터 스케일링 : 정규화 및 표준화"""
from sklearn.preprocessing import StandardScaler
"""평가"""
from sklearn.metrics import accuracy_score
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score
"""오차행렬(혼동행렬)"""
from sklearn.metrics import confusion_matrix
from sklearn.metrics import ConfusionMatrixDisplay
와인 데이터 불러오기
data=pd.read_csv("./data/08_wine.csv")
data
데이터 분류
X = data.iloc[:,:-1]
y = data["class"]
len(X), len(y)
출력 : (6497, 6497)
X, y
출력 :
( alcohol sugar pH
0 9.4 1.9 3.51
1 9.8 2.6 3.20
2 9.8 2.3 3.26
3 9.8 1.9 3.16
4 9.4 1.9 3.51
... ... ... ...
6492 11.2 1.6 3.27
6493 9.6 8.0 3.15
6494 9.4 1.2 2.99
6495 12.8 1.1 3.34
6496 11.8 0.8 3.26
[6497 rows x 3 columns],
0 0.0
1 0.0
2 0.0
3 0.0
4 0.0
...
6492 1.0
6493 1.0
6494 1.0
6495 1.0
6496 1.0
Name: class, Length: 6497, dtype: float64)
정규화하기
* 사용할 변수
- 독립변수 정규화 : X_scaled
* 훈련과 동시에 transform하는 함수 : fit_transform()
ss = StandardScaler()
ss.fit(X)
X_scaled = ss.transform(X)
X_scaled.shape
출력 : (6497, 3)
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y,
test_size=0.2,
random_state=42)
print(f"{X_train.shape} / {y_train.shape}")
print(f"{X_test.shape} / {y_test.shape}")
출력 :
(5197, 3) / (5197,)
(1300, 3) / (1300,)
랜덤포레스트 훈련하기
rf=RandomForestClassifier(n_jobs=-1, random_state=42)
rf
출력 :
rf.fit(X_train, y_train)
출력 :
훈련모델 저장 및 불러오는 2가지 방법
1. joblib 방식
2. pickle 방식
joblib으로 파일 저장, 불러오기
* 폴더 생성 : model
* 훈련모델 파일 저장하기
- 파일 확장자는 자유롭게
import joblib
joblib.dump(rf, "./model/rf_model_joblib.md")
출력 : ['./model/rf_model_joblib.md']
* 훈련모델 파일 불러오기
joblib_model = joblib.load("./model/rf_model_joblib.md")
joblib_model
출력 :
* 불러온 파일로 훈련 예측하기
joblib_model.predict(X_test)
출력 : array([1., 0., 1., ..., 1., 1., 1.])
pickle로 파일 저장, 불러오기
* 훈련모델 파일 저장하기
- wb : w는 쓰기, b는 바이너리 => 바이너리 형태로 쓰기
- "wb"라는 속성을 부여
- rf라는 함수를 파일에 덮어쓰기 시작함
import pickle
with open("./model/rf_model_pickle.md", "wb") as fw:
pickle.dump(rf, fw)
* 훈련모델 파일 불러오기
- rb : r은 읽기, b는 바이너리 => 바이너리 형태의 파일 내용 읽기
with open("./model/rf_model_pickle.md", "rb") as f:
load_pickle_model = pickle.load(f)
load_pickle_model
출력 :
*이후 부터는 예측할 데이터를 생성 또는 입력 받으셔서 예측을 수행하면 됨
load_pickle_model.predict(X_test)
출력 : array([1., 0., 1., ..., 1., 1., 1.])
'인공지능 > 머신러닝' 카테고리의 다른 글
[머신러닝ML] 분류 앙상블 모델 (1) | 2023.12.29 |
---|---|
[머신러닝ML] 머신러닝 실습 - 다중회귀모델(Multiple Regression) (1) | 2023.12.21 |
[머신러닝ML] 머신러닝 실습 - 선형회귀모델(LR; Linear Regression Model), 다항회귀모델(곡선) (0) | 2023.12.21 |
[머신러닝ML] 머신러닝 실습 - KNN모델(회귀모델) (0) | 2023.12.21 |
[머신러닝ML]머신러닝 실습 - 생선 구분하기(K최근접이웃 모델, KNN) (2) | 2023.12.20 |