scikit-learn의 실복 훈련 2~다양한 모형으로 탐색~
14436 단어 Python3sckit-learnPython
저번에 한 일
물류 회귀를 사용하여 고객 정보에 따라 고객이 정기예금을 신청할 확률을 예측했다
저번의 결과는
gridbest score는 0.938입니다.
AUC 0.91
네.
이번에 할 일
다른 모델을 이용하여 지난번보다 높은 정밀도를 목표로 한다.
무작위 삼림과 벡터기를 지원합니다.
다음에 심층 학습을 하겠습니다.
설치 코드는 여기.의bank2입니다.py
매크로 패키지 가져오기(마지막과 조금 다름)import numpy as np
import pandas as pd
from sklearn.model_selection import *
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
import matplotlib.pyplot as plt
import warnings
import mglearn
# 実行上問題ない注意は非表示にする
warnings.filterwarnings('ignore')
데이터 읽기(마지막과 동일)df = pd.read_csv("data/bank_01.csv")
#ワンホットエンコーディング
data_dummies = pd.get_dummies(df)
features = data_dummies.loc[:, 'age':'poutcome_success']
X = features.values
y = data_dummies['y_no'].values
#データ確認
print("X.shape: {} y.shape: {}".format(X.shape, y.shape))
print(data_dummies.y_no.value_counts())
GridSearchCV를 사용하여 최적 모델 검색pipe = Pipeline([('scaler', StandardScaler()), ('classifier', SVC())])
param_grid = [
{'classifier': [SVC()], 'classifier__C': [0.001, 0.01, 0.1, 1]},
{'classifier': [RandomForestClassifier()], 'scaler': [None], 'classifier__max_features': [1, 2, 3, 4, 5]}
]
X_train, X_test, y_train, y_test = train_test_split(
X, y, random_state=0)
grid = GridSearchCV(pipe, param_grid=param_grid, cv=5, scoring="roc_auc")
grid.fit(X_train, y_train)
print("Best parameters: ", grid.best_params_)
print("grid best score, ", grid.best_score_)
print("Test set accuracy: {:.2f}".format(grid.score(X_test, y_test)))
결실
Best parameters: {'classifier': SVC(), 'classifier__C': 0.1}
grid best score, 0.9249419295996347
Test set accuracy: 0.89
이 두 모델의 SVC는 0입니다.1에 높은 점수를 받았다.
이어 SVC를 조정하는gamma는 높은 점수를 목표로 한다.
SVC 검색 시 최적의 Cgammapipe = Pipeline([('scaler', StandardScaler()), ('classifier', SVC())])
param_grid = {'classifier__C': [0.001, 0.01, 0.1, 1], 'classifier__gamma': [0.01, 0.1, 1, 10, 100]}
X_train, X_test, y_train, y_test = train_test_split(
X, y, random_state=0)
grid = GridSearchCV(pipe, param_grid=param_grid, return_train_score=False, cv=5, scoring="roc_auc")
grid.fit(X_train, y_train)
print("Best parameters: ", grid.best_params_)
print("grid best score, ", grid.best_score_)
print("Test set AUC: {:.2f}".format(grid.score(X_test, y_test)))
결실
Best parameters: {'classifier_C': 1, 'classifier_gamma': 0.01}
grid best score, 0.9296152371929293
Test set AUC: 0.90
C는 1,gamma는 0.01에서 높은 점수를 받았다.
'mean_test_score의 히트맵 확인xa = 'classifier__alpha'
xx = param_grid[xa]
ya = 'classifier__hidden_layer_sizes'
yy = param_grid[ya]
plt.figure(figsize=(5,8))
scores = np.array(grid.cv_results_['mean_test_score']).reshape(len(yy), -1)
mglearn.tools.heatmap(scores, xlabel=xa, xticklabels=xx,
ylabel=ya, yticklabels=yy, cmap="viridis")
결실
gamma는 0.01에서 높은 점수였지만 C와는 아무 상관이 없었다.
'mean_test_스코어는 반올림 유효 숫자이기 때문에 최고 점수는 0.9296152371929293이다.
저번의 점수보다 조금 낮다.
다음번 깊이 있는 학습을 사용한다.
Reference
이 문제에 관하여(scikit-learn의 실복 훈련 2~다양한 모형으로 탐색~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/shiroino11111/items/610bdd0704cdc25db7c0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import numpy as np
import pandas as pd
from sklearn.model_selection import *
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
import matplotlib.pyplot as plt
import warnings
import mglearn
# 実行上問題ない注意は非表示にする
warnings.filterwarnings('ignore')
df = pd.read_csv("data/bank_01.csv")
#ワンホットエンコーディング
data_dummies = pd.get_dummies(df)
features = data_dummies.loc[:, 'age':'poutcome_success']
X = features.values
y = data_dummies['y_no'].values
#データ確認
print("X.shape: {} y.shape: {}".format(X.shape, y.shape))
print(data_dummies.y_no.value_counts())
pipe = Pipeline([('scaler', StandardScaler()), ('classifier', SVC())])
param_grid = [
{'classifier': [SVC()], 'classifier__C': [0.001, 0.01, 0.1, 1]},
{'classifier': [RandomForestClassifier()], 'scaler': [None], 'classifier__max_features': [1, 2, 3, 4, 5]}
]
X_train, X_test, y_train, y_test = train_test_split(
X, y, random_state=0)
grid = GridSearchCV(pipe, param_grid=param_grid, cv=5, scoring="roc_auc")
grid.fit(X_train, y_train)
print("Best parameters: ", grid.best_params_)
print("grid best score, ", grid.best_score_)
print("Test set accuracy: {:.2f}".format(grid.score(X_test, y_test)))
pipe = Pipeline([('scaler', StandardScaler()), ('classifier', SVC())])
param_grid = {'classifier__C': [0.001, 0.01, 0.1, 1], 'classifier__gamma': [0.01, 0.1, 1, 10, 100]}
X_train, X_test, y_train, y_test = train_test_split(
X, y, random_state=0)
grid = GridSearchCV(pipe, param_grid=param_grid, return_train_score=False, cv=5, scoring="roc_auc")
grid.fit(X_train, y_train)
print("Best parameters: ", grid.best_params_)
print("grid best score, ", grid.best_score_)
print("Test set AUC: {:.2f}".format(grid.score(X_test, y_test)))
xa = 'classifier__alpha'
xx = param_grid[xa]
ya = 'classifier__hidden_layer_sizes'
yy = param_grid[ya]
plt.figure(figsize=(5,8))
scores = np.array(grid.cv_results_['mean_test_score']).reshape(len(yy), -1)
mglearn.tools.heatmap(scores, xlabel=xa, xticklabels=xx,
ylabel=ya, yticklabels=yy, cmap="viridis")
Reference
이 문제에 관하여(scikit-learn의 실복 훈련 2~다양한 모형으로 탐색~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shiroino11111/items/610bdd0704cdc25db7c0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)