모델의 선택과 평가 - 교차 검증
2.klearn.metrics
klearn.metrics.recall_score(y_true, y_pred, labels=None,
pos_label=1,average='binary', sample_weight=None)
매개 변수average:string, [None,'micro','macro'(default),'samples','weighted'] macro: 두 가지 분류의metrics의 평균값을 계산하여 각 클래스에 같은 권한을 부여하는 값을 제시한다.따라서 Macro-averaging 방법은 소형의 성능에 큰 영향을 미칠 수 있다.weighted: 불균형 수량의 클래스에 대해 2분류metrics의 평균을 계산하고 각 클래스의score에 가중하여 실현한다.마이크로: 모든 샘플 클래스와 전체 metrics에 기여한pair(sample-weight)를 제공합니다. 전체 클래스에 대한 metrics 구화가 아니라 모든 클래스의 metrics에 대한 권중과 인자를 구화하여 전체 몫을 계산합니다.Micro-averaging 방법은 다중 탭(multilabel) 문제에 설정되어 여러 분류를 포함하고 있으며, 이 때 큰 클래스는 무시됩니다.samples: multilabel 문제에 적용됩니다.이것은 모든 클래스를 계산하지 않습니다. 반대로, 평가 데이터에서 실제 클래스와 예측 클래스의 차이를 계산하는metrics를 통해 평균(sample weight-weighted)average:average=None은 모든 클래스의 득점을 포함하는 그룹을 되돌려줍니다.sklearn.metrics.roc_curve(y_true,y_score, pos_label=None,
sample_weight=None, drop_intermediate=True)
이 함수는 이 세 변수를 되돌려줍니다. fpr, tpr, 한도값thresholds;분류기의 중요한 기능인'확률 출력'은 분류기가 어떤 견본이 얼마나 큰 확률을 가지고 양견본(또는 음견본)에 속한다고 생각하는지 나타낸다.Score는 각 테스트 샘플이 양의 샘플에 속할 확률을 나타냅니다.다음에 우리는 높은 것부터 낮은 것까지 차례대로'Score'값을 한도값인threshold로 한다. 테스트 샘플이 정샘플에 속할 확률이 이threshold보다 크거나 같을 때 우리는 그것을 정샘플이라고 생각하고 그렇지 않으면 마이너스 샘플이라고 생각한다.매번 다른threshold를 선택할 때마다 우리는 FPR과 TPR, 즉 ROC 곡선의 한 점을 얻을 수 있다.threshold를 1과 0으로 설정하면 ROC 곡선의 (0, 0) 과 (1, 1) 두 점을 얻을 수 있습니다.이러한 (FPR, TPR) 쌍을 연결하면 ROC 커브가 생성됩니다.threshold 수치가 많을수록 ROC 곡선이 매끄럽습니다.사실 우리는 반드시 모든 테스트 샘플이 정샘플의 확률치를 얻어야 하는 것은 아니다. 이 분류기가 이 테스트 샘플에 대한'평점치'를 얻으면 된다(평점치가 반드시 (0,1)구간에 있는 것은 아니다).평점이 높을수록 분류기는 이 테스트 샘플이 정샘플이라고 확신하고 각 평점값을threshold로 동시에 사용한다.나는 평점치를 확률로 바꾸는 것이 좀 더 이해하기 쉽다고 생각한다.fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2) (mean_squared_error(target,dicted))
교차 검증: 평가기의 성능 학습 예측 함수의 매개 변수를 평가하고 같은 데이터에서 테스트하는 것은 방법상의 오류이다. 방금 본 견본만 반복하는 라벨의 모델은 완벽한 점수를 가지지만 유용하고 보이지 않는 데이터를 예측할 수 없다.이런 상황을 과의합이라고 부른다.이러한 상황을 피하기 위해 일반적인 방법은 기계 학습 실험을 집행(감독)하여 일부 사용 가능한 데이터를 테스트 집합으로 삼는 것이다.X_test, y_test
**train_test_split**: scikit , .
```
rom sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
data=load_iris().data
target=load_iris().target
X_train,X_test,y_train,y_test=train_test_split(data,target,test_size=0.4,random_state=0)
clf=SVC(kernel="linear").fit(X_train,y_train)
print(clf.score(X_test,y_test))
```
분석: 평가기에 사용되는 다른 설정('초파라미터')을 평가할 때, 예를 들어 C가 SVM에 수동으로 설정해야 하는 설정을 평가할 때, 평가기가 가장 잘 실행될 때까지 파라미터를 조정할 수 있기 때문에 테스트 집합에서 과도하게 맞출 수 있다.이렇게 하면 테스트 집합에 대한 지식을 모델에 누설할 수 있고 평가 지표는 범용 성능을 보고하지 않는다.이 문제를 해결하기 위해 데이터 집합의 또 다른 부분은 이른바'검증집합'이라고 할 수 있다. 훈련은 훈련집합에서 하고 그 다음에 검증집합을 평가하며 실험이 성공한 것 같을 때 테스트집합에서 최종 평가를 할 수 있다.그러나 사용 가능한 데이터를 세 그룹으로 나누어 학습 모델에 사용할 샘플 수를 크게 줄였고 결과는 한 쌍(훈련, 검증) 집합의 특정한 무작위 선택에 달려 있을 수 있다.해결: 이 문제를 해결하는 방법은 교차 검증(약칭 이력서)이라고 불리는 과정이다.하나의 테스트 세트에는 최종 평가가 필요하지만 CV에서는 더 이상 검증 세트가 필요하지 않습니다.기본적인 방법에서 k-fold CV라고 하는데 훈련집은 k개의 비교적 작은 집합으로 나뉜다(다른 방법은 다음과 같지만 보통 같은 원칙을 따른다).그리고 k배 교차 검증 보고서를 통해 실적 지표는 순환에서 계산된 값의 평균값이다.이런 방법은 계산에 있어서 비쌀 수 있지만 너무 많은 데이터(예를 들어 임의의 테스트 집합을 고정시키는 경우)를 낭비하지 않는다. 이것은 문제의 주요 장점이다. 예를 들어 역추리 등이다. 그 중에서 견본의 수량은 매우 적다.
교차 검증의 도량을 계산하고 교차 검증을 사용하는 가장 간단한 방법은crossval_score는 추정기와 데이터 집합에서 도움말 함수를 호출합니다.기본적으로 각 CV가 반복적으로 계산하는 점수는 score 추정량의 방법입니다.점수 매개 변수를 사용하여 그것을 바꿀 수 있다.
print(cross_val_score(clf,data,target,cv=5,scoring="f1_macro"))
따라서 점수 추정의 평균 점수와 95% 신뢰 구간은 다음과 같다.print('Accuracy:%.2f(+/-%.2f)'%(scores.mean(),scores.std()*2))
교차 검증을 통해 이 함수와 입력된 모든 요소cross 를 예측합니다val_predict는 유사한 인터페이스cross 를 가지고 있습니다val_score, 그러나 이 원소가 테스트에 집중되었을 때 이 원소에 대한 예측을 되돌려줍니다.교차 검증 정책만이 모든 요소를 테스트 집합에 한 번 정확하게 분배할 수 있습니다. (그렇지 않으면 이상이 발생합니다.)그런 다음 이러한 예측을 사용하여 분류기를 평가할 수 있습니다.
dicted=cross_val_predict(clf,data,target,cv=5)
print(accuracy_score(target,dicted))
print(mean_squared_error(target,dicted))
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.