본문 바로가기

Study/class note

빅분기 실기를 위한 예제

유형3 예제. wine데이터를 분류하는 모델을 RandomForest(의사결정트리 + 앙상블)로 구현

# 1. 데이터 로드
import pandas as pd
 
wine = pd.read_csv("c:\\data\\wine.csv")
wine.shape  #(178, 14)
wine.head() #Type컬럼이 label
 
# 2. 결측치 확인
wine.isnull().sum()  #결측치 없음
 
# 3. 문자 데이터를 숫자로 변경
# 문자 데이터 없음
x = wine.iloc[:,1:]
y = wine.iloc[:,0]
 
# 4. 훈련 데이터와 테스트 데이터 분리
from sklearn.model_selection import train_test_split
 
x_train, x_test, y_train, y_test = train_test_split(x,y,test_size = 0.1, random_state = 1)
 
# 5. 훈련 데이터 정규화
from sklearn.preprocessing import MinMaxScaler
 
scaler = MinMaxScaler()
scaler.fit(x_train)
 
x_train2 = scaler.transform(x_train)
x_test2 = scaler.transform(x_test)
 
# print(x_train2.min(), x_train2.max())  #0.0 1.0000000000000002
# print(x_test2.min(), x_test2.max())  #-0.0326530612244898 0.9051355206847361
 
# 6. 의사결정트리 모델 생성 
from sklearn.tree import DecisionTreeClassifier
 
model_wine = DecisionTreeClassifier(criterion = 'entropy', max_depth = 5, random_state = 1)
model_wine
 
# 7. 모델 훈련
model_wine.fit(x_train2, y_train)
 
# 8. 훈련된 모델로 테스트 데이터 예측
result_train = model_wine.predict(x_train2)
result_test = model_wine.predict(x_test2)
 
# 9. 모델 평가
train_pct = sum(result_train == y_train)/len(y_train) * 100
test_pct = sum(result_test == y_test)/len(y_test) * 100
print(train_pct, test_pct)
 
# from sklearn.metrics import confusion_matrix
# cross = confusion_matrix(y_test, result_test)
# cross
 
# # 10. 모델 성능 개선
# 랜덤포레스트
from sklearn.ensemble import RandomForestClassifier
 
model_rd = RandomForestClassifier(n_estimators = 5, random_state = 1)
 
model_rd.fit(x_train2, y_train)
 
result_train = model_rd.predict(x_train2)
result_test = model_rd.predict(x_test2)
 
train_pct_rd = sum(result_train == y_train)/len(y_train) * 100
test_pct_rd = sum(result_test == y_test)/len(y_test) * 100
print(train_pct_rd, test_pct_rd)
반응형

'Study > class note' 카테고리의 다른 글

리눅스 / 리눅스 명령어  (0) 2022.03.10
리눅스 설치  (0) 2022.03.08
R / 소리 시각화  (0) 2022.03.08
R / 사회적 연결망2  (0) 2022.03.08
머신러닝 / 병렬작업, 사회적 연결망  (0) 2022.03.07