데이터 검증하기-cross-validation, grid-search

2018. 4. 25. 04:32Python-이론/python-인공지능

데이터 검증하기



데이터를 검정하는 것은 입력 모델들이 타당한지 검사하는 것을 의미한다. 그중에서도 cross-validation,grid-search에 대해서 설명해보겠다.



cross-validation

이것을 한국어로 교차 검증이라고도 하는데 입력될 데이터를 임의로 몇개 나누어서 몇개는 훈련 데이터 몇개는 테스트 데이터로 이용하는 것을 으미한다. 예를 들어 하나의 데이터를 A,B,C로 나눈다. A와 B를 입력데이터로 쓰고 C를 테스트 데이터로 쓴다. 그리고 B,C를 입력 데이터로 쓰고 A를 테스트 데이터로 쓴다. A,C를 입력 데이터로 쓰고 B를 테스트 데이터로 써서 최종적으로 세개의 결과를 종합하여 높은 정확도를 나타낸다.



import pandas as pd
from sklearn import metrics,svm,model_selection

csv = pd.read_csv('../iris.csv')

data = csv[["SepalLength","SepalWidth","PetalLength","PetalWidth"]]
name = csv["Name"]

clf = svm.SVC()
scores = model_selection.cross_val_score(clf,data,name,cv=5)
print(scores)
print('평균',scores.mean())




gridsearch는 머신러닝을 실행할 때 파라미터를 넣어줄대 가장 높을 정확률이 나오는 파라미터를 선택하여 실행시킨다.



import pandas as pd
from sklearn import metrics,svm
from sklearn.grid_search import GridSearchCV

train = pd.read_csv('../trainImages/train.csv')
test = pd.read_csv('../trainImages/t10k.csv')

trainLabel = train.ix[:,0]
trainData = train.ix[:,1:577]
testLabel = test.ix[:,0]
testData = test.ix[:,1:577]

params = [
{"C":[1,10,100,1000],"kernel":["linear"]},
{"C":[1,10,100,1000],"kernel":["rbf"],"gamma":[0.001,0.0001]}
]
clf = GridSearchCV(svm.SVC(),params ,n_jobs=-1)
clf.fit(trainData,trainLabel)
print("학습기: ",clf.best_estimator_)
pre = clf.predict(testData)
acScore = metrics.accuracy_score(testLabel,pre)
print(acScore)