유형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 |