반응형
1. 특성치(X), 레이블(y) 나누기
# 데이터셋 불러오기 및 확인
import warnings
warning.filterwarnings("ignore")
import pandas as pd
data = pd.read_csv('Fvote.csv', encoding='utf-8')
data.head()
# 특성변수 데이터셋 나누기
# 방법1 : 특성이름으로 데이터셋 나누기
X = data[['gender_female', gender_male', 'region_Chungcheong', 'region_Honam'
'region_Others', region_Sudo', 'region_Youngnam', 'edu', 'income',
'age', 'score_gov', 'score_pregress', 'score_intention']]
# 방법2 : 특성 위치값으로 데이터셋 나누기
X = data[data.column[1:14]]
# 방법3 : loc 함수로 데이터셋 나누기 (단, 불러올 특성이 연달아 있어야 함)
X = data.loc[:, 'gender_female':'score_intention']
2. train-test 데이터셋 나누기
# 훈련데이터와 테스트 데이터 셋 나누기 및 데이터 확인
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=42)
# 데이터셋 행렬 구조 확인
print(X_train.shape)
print(X_test.shape)
(158, 13)
(53, 13)
3. 모델 적용
# LogisticRegression 알고리즘 적용
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
가. 랜덤없는 교차검증 : cross_val_score
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X_train, y_train, cv=5)
print("5개 테스트 셋 정확도:", scores)
print("정확도 평균:", scores.mean())
5개 테스트 셋 정확도: [0.71875 0.6875 0.8125 0.58064516 0.80645161]
정확도 평균: 0.7211693548387096
나. 랜덤있는 교차검증 : K-Fold
from sklearn.model_selection import KFold
kfold = Kfold(n_splits=5, shuffle=True, random_state=42)
score = cross_val_score(model, X_train, y_train, cv=kfold)
print("5개의 폴드의 정확도:", scores)
5개 폴드의 정확도: [0.71875 0.6875 0.8125 0.58064516 0.80645161]
다. 임의분할 교차검증
from sklearn.model_selection import ShuffleSplit
shuffle_split = ShuffleSplit(test_size=0.5, train_size=0.5, random_state=42)
score=cross_val_score(model, X_train, y_train, cv=shuffle_split)
print("교차검증 정확도:", scores)
4. train-validity-test 분할과 교차검증
from sklearn.model_selection import train_test_split
X_train_val, X_test, y_train_val, y_test = train_test_split(X, y, random_state=1)
X_train, X_valid, y_train, y_valid = train_test_split(X_train_val, y_train_val, random_state=2)
model.fit(X_train, y_train)
scores = cross_val_score(model, X_train, y_train, cv=5)
print("교차검증 정확도:", scores)
print("정확도 평균:", scores.mean())
교차검증 정확도 : [0.58333333 0.66666667 0.70833333 0.65217391 .065217391]
정확도 평균 : 0.652536231884058
model.score(X_valid, y_valid)
0.65
model.score(X_test, y_test)
0.6981132075471698
반응형
'빅데이터분석기사 > 코드' 카테고리의 다른 글
[빅데이터분석기사] 모델훈련과 튜닝 (0) | 2022.06.14 |
---|---|
[빅데이터분석기사] 데이터 스케일링 (0) | 2022.06.13 |
[빅데이터분석기사] 범주변수의 변환(one-hot-encoding) (0) | 2022.06.11 |
[빅데이터분석기사] 데이터탐색과 데이터정제 실습 (2) (0) | 2022.06.07 |
[빅데이터분석기사] 데이터탐색과 데이터정제 실습 (1) (0) | 2022.06.06 |