logo

Sklearn의 Accuracy_Score

데이터 과학 워크플로우의 중요한 단계는 적절한 측정항목을 사용하여 모델의 정확성을 측정하는 것입니다. 이 튜토리얼에서는 소스 샘플의 예측 클래스 정확도를 계산하는 두 가지 방법인 수동 방법과 Python의 scikit-learn 라이브러리를 사용하는 방법을 알아봅니다.

그렇지 않으면 배쉬

다음은 이 튜토리얼에서 논의한 주제에 대한 요약입니다.

  • Accuracy_score를 수동으로 계산
  • scikit learn을 사용하여 Accuracy_score 계산
  • Scikit은 Accuracy_score의 예를 학습합니다.
  • scikit은 Accuracy_Score를 어떻게 학습하나요?

정확성이란 무엇입니까?

분류 모델의 성능을 계산하는 데 널리 사용되는 측정항목 중 하나는 정확성입니다. 모델이 성공적으로 예측한 라벨의 비율은 정확도로 표시됩니다. 예를 들어 모델이 100개 라벨 중 80개를 정확하게 분류했다면 정확도는 0.80이 됩니다.

정확도 점수를 계산하는 함수 만들기

이미 샘플의 실제 레이블이 있고 레이블이 모델을 예측했다는 점을 고려하여 예측 값 정확도 점수를 계산하는 Python 함수를 만들어 보겠습니다.

암호

 # Python program to define a function to compute accuracy score of model's predicted class # Defining a function which takes true values of the sample and values predicted by the model def compute_accuracy(Y_true, Y_pred): correctly_predicted = 0 # iterating over every label and checking it with the true sample for true_label, predicted in zip(Y_true, Y_pred): if true_label == predicted: correctly_predicted += 1 # computing the accuracy score accuracy_score = correctly_predicted / len(Y_true) return accuracy_score 

위 함수는 분류 모델의 예측 레이블과 샘플의 실제 레이블 값을 인수로 받아들이고 정확도 점수를 계산합니다. 여기서는 각 쌍의 실제 레이블과 예측 레이블을 병렬로 반복하여 올바른 예측 수를 기록합니다. 그런 다음 해당 숫자를 총 레이블 수로 나누어 정확도 점수를 계산합니다.

이제 샘플에 이 기능을 적용해 보겠습니다.

암호

 # Python program to compute accuracy score using the function compute_accuracy # Importing the required libraries import numpy as np from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.datasets import load_iris # Loading the dataset X, Y = load_iris(return_X_y = True) # Splitting the dataset in training and test data X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.3, random_state = 0) # Training the model using the Support Vector Classification class of sklearn svc = SVC() svc.fit(X_train, Y_train) # Computing the accuracy score of the model Y_pred = svc.predict(X_test) score = compute_accuracy(Y_test, Y_pred) print(score) 

산출:

 0.9777777777777777 

지원 벡터 분류 모델 예측의 정확도 점수는 0.978입니다.

numpy 배열을 사용하여 동일성 계산을 벡터화하면 위에서 언급한 코드를 더 효율적으로 만들 수 있습니다.

Sklearn의 Accuracy_score()를 사용한 정확도

sklearn.metrics의 Accuracy_score() 메서드는 샘플의 실제 레이블과 모델에서 예측한 레이블을 매개 변수로 받아들이고 정확도 점수를 부동 소수점 값으로 계산합니다. 이는 마찬가지로 Python에서 정확도 점수를 얻는 데 사용할 수 있습니다. sklearn.metrics 클래스에는 일반적인 평가 지표를 계산하는 데 유용한 몇 가지 기능이 있습니다. sklearn의 Accuracy_score() 함수를 사용하여 이전과 동일한 샘플 데이터 세트를 사용하여 지원 벡터 분류 모델의 정확도 점수를 계산해 보겠습니다.

sklearn.metrics.accuracy_score(y_true, y_pred, *, Normalize=True, Sample_weight=None)

우리는 이를 분류의 정확도 점수를 계산하는 데 사용합니다. 이 방법은 다중 레이블 분류에서 하위 그룹 정확도를 계산합니다. 데이터 세트의 예측된 레이블 하위 집합은 y_true에 있는 실제 레이블 데이터 세트와 정확하게 일치해야 합니다.

매개변수

    y_true(1d 배열 유사 또는 레이블/희소 행렬을 나타내는 배열):이는 특정 샘플의 실제 라벨입니다.y_pred(1d 배열 유사 또는 레이블/희소 행렬을 나타내는 배열):분류 모델이 반환한 예측 라벨입니다.정규화(부울, 기본값 = True):대답이 False인 경우 성공적으로 분류된 예측 샘플의 수를 제공합니다. True인 경우 올바르게 분류된 예측 샘플의 비율을 반환합니다.Sample_weight(모양(n,)의 배열과 유사, 기본값 = 없음):샘플 가중치.

보고

    점수(부동):Normalize == True인 경우 성공적으로 분류된 샘플(부동)의 비율을 제공합니다. 그렇지 않으면 성공적으로 분류된 예측 샘플의 수(int)를 반환합니다. 1은 Normalize == True이고 Normalize == False로 제공된 샘플 수에 대한 100% 정확도입니다.

Accuracy_score의 예

암호

 # Python program to compute accuracy score using the function accuracy_score # Importing the required libraries import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from sklearn.svm import SVC from sklearn.datasets import load_iris # Loading the dataset X, Y = load_iris(return_X_y = True) # Splitting the dataset in training and test data X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.3, random_state = 0) # Training the model using the Support Vector Classification class of sklearn svc = SVC() svc.fit(X_train, Y_train) # Computing the accuracy_score of the model Y_pred = svc.predict(X_test) score = accuracy_score(Y_test, Y_pred) print(score) 

산출:

 0.9777777777777777 

여러 레이블이 있는 이진 레이블 표시기를 사용하는 경우:

암호

 # Python program to show how to calculate accuracy score for multi-label data import numpy as np accuracy_score(np.array([[1, 1], [2, 1]]), np.ones((2, 2))) 

산출:

 0.5 

scikit이 Accuracy_score를 학습하는 방법

sklearn.metrics 패키지의 Accuracy_score 메서드는 다중 레이블 분류에서 하위 집합 정확도를 할당합니다.

모델이 특정 샘플에 대해 예측한 레이블과 샘플의 실제 레이블이 정확히 일치해야 합니다.

정확도는 모든 클래스에서 모델의 동작을 설명합니다. 모든 수업이 비교적 중요하다면 도움이 됩니다.

전체 샘플 수 또는 전체 예측 수에 대한 정확한 예측 수의 비율은 모델의 정확도를 결정하는 데 사용됩니다.

암호:

  1. 아래 코드는 두 개의 라이브러리를 가져옵니다. 모델 정확도와 numpy 라이브러리를 예측하기 위해 sklearn.metrics를 가져오고 있습니다.
  2. 샘플의 실제 값은 y_true = ['1', '1', '0', '0', '1', '1', '0']입니다.
  3. ['1', '1', '0', '0', '1', '1', '0'] 이는 샘플 데이터에 대한 모델의 예측 값입니다.
  4. 정확도 = ( 행렬[0][0] + 행렬[-1][-1] ) / numpy.sum(matrix) 은 분류 모델의 정확도 점수를 얻는 데 사용됩니다.
  5. 정확도 점수는 print(accuracy)를 사용하여 출력으로 표시됩니다.

암호

 # Pythpn program to show how accuracy_score works # import libraries import numpy as np import sklearn.metrics # Creating a true and predicted sample Y_true = ['1', '1', '0', '0', '1', '1', '0'] Y_pred = ['1', '0', '1', '1', '0', '1', '1'] # finding a confusion matrix matrix = sklearn.metrics.confusion_matrix(Y_true, Y_pred) matrix = np.flip(matrix) print('Confusion Matrix: 
', matrix) accuracy = (matrix[0][0] + matrix[-1][-1]) / np.sum(matrix) print(accuracy) 

산출:

 Confusion Matrix: [[2 2] [3 0]] 0.2857142857142857 

그래서 이 튜토리얼에서는 Python에서 scikit-learn Accuracy_score를 배우고 몇 가지 구현 예를 살펴보았습니다.