반응형
1. 데이터 불러오기 및 데이터셋 분할
# 분석 데이터 불러오기
import warning
warning.filterwarnings("ignore")
import pandas as pd
data = pd.read_csv('Fvote.csv', encoding='utf-8')
# 특성치와 레이블 데이터셋 구분
X = data[data.columns[1:13]]
y = data[['vote']]
# 훈련 데이터, 테스트 데이터 분할
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, statify=y, random_state=42)
2. Grid Search
# 그리드서치를 위한 라이브러리 및 탐색 하이퍼파라미터 설정
from sklearn.model_selection import GridSearchCV
param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100]}
# LogisticRegression 알고리즘 적용
from sklearn.linear_model import LogisticRegression
# 그리드서치를 위한 라이브러리 및 탐색 하이퍼파라미터 설정
# 교차검정(cv) 5 설정, 훈련데이터 정확도 결과 제시하기(True
grid_search = GridSearchCV(LogisticRegression(), param_grid, cv=5, return_train_score=True)
grid_search.fit(X_train, y_train)
GridSearchCV(cv = 5, estimator = LogisticRegression(),
param_grid={'C': [0.001, 0.01, 0.1, 1, 10, 100]},
return_train_score=True)
# 정확도가 가장 높은 하이퍼파라미터(C) 및 정확도 제시
print("Best Parameter: {}".format(grid_search.best_params_))
print("Best Cross-validity Score: {:.3f}".format(grid_search.best_score_))
Best Parameter: {'C': 10}
Best Cross-validity Score: 0.727
# 테스트 데이터에 적용(C=10), 정확도 결과
print("Test set Score: {:.3f}".format(grid_search.score(X_test, y_test)))
Test set Score: 0.679
# 그리드서치 하이퍼파라미터별 상세 결과값
result_grid = pd.DataFrame(grid_search.cv_results_)
result_grid
# 하이퍼파라미터(C)값에 따른 훈련데이터와 테스트데이터의 정확도(accuracy) 그래프
import matplotlib.pyplot as plt
plt.plot(result_grid['param_C'], result_grid['mean_train_score'], label="Train")
plt.plot(result_grid['param_C'], result_grid['mean_test_score'], label="Test")
plt.legend()
3. Random Search
# 랜덤서치를 위한 라이브러리 및 탐색 하이퍼파라미터 설정
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint
param_distribs={'C': randint(low=0.001, high=100)}
# LogisticRegression 알고리즘 적용
from sklearn.linear_model import LogisticRegression
# 랜덤서치를 로지스틱 모델에 적용하여 훈련데이터 학습
# 교차검증(cv) 5 설정, 훈련데이터 정확도 결과 제시하기(True)
random_search = RandomizedSearchCV(LogisticRegression(),
param_distributions=param_distribs, cv=5,
# n_iter=100, 랜덤횟수 디폴트=10
return_train_score=True)
random_search.fit(X_train, y_train)
RandomizedSearchCV(cv=5, estimator=LogisticRegression(),
param_distribution={'C':<scipy.stats._distn_infrastructure.rv_frozen object at 0x000001E955BoCE50>},
return_train_score=True)
# 정확도가 가장 높은 하이퍼파라미터(C) 및 정확도 제시
print("Best Parameter: {}".format(random_search.best_params_))
print("Best Cross-validity Score: {:.3f}".format(random_search.best_score_))
Best Parameter: {'C': 66}
Best Cross-validity Score: 0.727
# 테스트 데이터에 최적 탐색 하이퍼 파라미터 적용 정확도 결과
print("Test set Score: {:.3f}".format(random_search.score(X_test, y_test)))
Test set Score: 0.679
# 랜덤서치 하이퍼파라미터별 상세 결과값
result_random = random_search.cv_results_
pd.DataFrame(result_random)
# 하이퍼파라미터(C)값에 따른 훈련데이터와 테스트데이터의 정확도(accuracy) 그래프
import matplotlib.pyplot as plt
plt.plot(result_grid['param_C'], result_grid['mean_train_score'], label="Train")
plt.plot(result_grid['param_C'], result_grid['mean_test_score'], label="Test")
plt.legend()
반응형
'빅데이터분석기사 > 코드' 카테고리의 다른 글
[빅데이터분석기사] 6회 실기시험부터 적용되는 작업형 3유형 풀이 (1) | 2023.05.23 |
---|---|
[빅데이터분석기사] 모델평가 (0) | 2022.06.17 |
[빅데이터분석기사] 데이터 스케일링 (0) | 2022.06.13 |
[빅데이터분석기사] 데이터셋 분할과 모델검증 (0) | 2022.06.12 |
[빅데이터분석기사] 범주변수의 변환(one-hot-encoding) (0) | 2022.06.11 |