Hướng dẫn what is confusion matrix in naive bayes python? - ma trận nhầm lẫn trong trăn bayes ngây thơ là gì?

Tôi muốn phân loại nhiều câu với trình phân loại Naive Bayes với 5 loại và tôi có thể làm, nhưng tôi không thể tạo ra một ma trận nhầm lẫn. Tôi đã nghiên cứu nhiều nhưng tôi không thể tìm thấy. Đây là mã của tôi, vui lòng dạy tôi cách tạo ma trận nhầm lẫn qua mã sau:

nb_classifier = NaiveBayesClassifier.train(trainData)
print(accuracy(nb_classifier, testData))
#Output is 0.8152876648699048

print(nb_classifier.labels())
#Output is ['cat1', 'cat2', 'cat3', 'cat4', 'cat5']

Hướng dẫn what is confusion matrix in naive bayes python? - ma trận nhầm lẫn trong trăn bayes ngây thơ là gì?

Ddarellis

3,8823 huy hiệu vàng25 Huy hiệu bạc52 Huy hiệu đồng3 gold badges25 silver badges52 bronze badges

Đã hỏi ngày 23 tháng 1 năm 2018 lúc 23:09Jan 23, 2018 at 23:09

1

Nó có thể đáng để sử dụng cách sau đây để xây dựng trình phân loại. Ma trận nhầm lẫn cũng được bao gồm.

from sklearn.naive_bayes import MultinomialNB # or any other NB model
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix

nb_classifier = MultinomialNB()

nb_classifier.fit(X_train, y_train)

y_pred = nb_classifier.predict(X_test)

acc_score = accuracy_score(y_test, y_pred)
conf_mat = confusion_matrix(
        y_test, y_pred, labels = ['cat1', 'cat2', 'cat3', 'cat4', 'cat5'])

print(acc_score)
print(conf_mat)

Đã trả lời ngày 24 tháng 1 năm 2018 lúc 0:21Jan 24, 2018 at 0:21

Hướng dẫn what is confusion matrix in naive bayes python? - ma trận nhầm lẫn trong trăn bayes ngây thơ là gì?

KrkirovkrkirovKRKirov

3.6992 Huy hiệu vàng13 Huy hiệu bạc18 Huy hiệu đồng2 gold badges13 silver badges18 bronze badges

7

Ma trận nhầm lẫn là gì? Đó là một bảng được sử dụng trong các vấn đề phân loại để đánh giá các lỗi trong mô hình được thực hiện. Các hàng đại diện cho các lớp thực tế mà kết quả nên có. Trong khi các cột đại diện cho các dự đoán chúng tôi đã thực hiện. Sử dụng bảng này, thật dễ dàng để xem dự đoán nào là sai.

Ma trận nhầm lẫn có nghĩa là gì?

Một ma trận nhầm lẫn là một bảng được sử dụng để xác định hiệu suất của thuật toán phân loại. Một ma trận nhầm lẫn trực quan hóa và tóm tắt hiệu suất của thuật toán phân loại.

Sau khi thực hiện việc này, tôi quyết định khám phá các cách khác để đánh giá hiệu suất của trình phân loại. Khi tôi bắt đầu tìm hiểu về ma trận nhầm lẫn, độ chính xác, độ chính xác, thu hồi, điểm số F1, đường cong ROC, tích cực thực sự, dương tính giả, tiêu cực thực sự, âm tính giả, tôi thực sự trở nên bối rối hơn bất cứ điều gì khác! Điều gì được cho là tích cực, một lần nữa?

Để làm rõ các vấn đề, tôi sẽ sử dụng thuật toán lọc thư rác ở trên để áp dụng tất cả các khái niệm này. Tôi sẽ đưa ra định nghĩa của họ và động lực đằng sau chúng, để chúng có thể được sử dụng cho bất kỳ thuật toán học máy thích hợp nào. Hãy nghĩ về bài đăng này như một bảng gian lận cho các số liệu phân loại, với bộ lọc thư rác là một ví dụ được áp dụng.

Mã được sử dụng trong bài đăng này có thể được tìm thấy trong sổ ghi chép này:

Nó cũng có thể được tìm thấy trong github của tôi:

Thực hiện Naive Bayes

Sau khi đọc dữ liệu, tạo các vectơ tính năng

from sklearn.naive_bayes import MultinomialNB # or any other NB model
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix

nb_classifier = MultinomialNB()

nb_classifier.fit(X_train, y_train)

y_pred = nb_classifier.predict(X_test)

acc_score = accuracy_score(y_test, y_pred)
conf_mat = confusion_matrix(
        y_test, y_pred, labels = ['cat1', 'cat2', 'cat3', 'cat4', 'cat5'])

print(acc_score)
print(conf_mat)
6 và vectơ mục tiêu
from sklearn.naive_bayes import MultinomialNB # or any other NB model
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix

nb_classifier = MultinomialNB()

nb_classifier.fit(X_train, y_train)

y_pred = nb_classifier.predict(X_test)

acc_score = accuracy_score(y_test, y_pred)
conf_mat = confusion_matrix(
        y_test, y_pred, labels = ['cat1', 'cat2', 'cat3', 'cat4', 'cat5'])

print(acc_score)
print(conf_mat)
7 và chia bộ dữ liệu thành tập huấn luyện
from sklearn.naive_bayes import MultinomialNB # or any other NB model
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix

nb_classifier = MultinomialNB()

nb_classifier.fit(X_train, y_train)

y_pred = nb_classifier.predict(X_test)

acc_score = accuracy_score(y_test, y_pred)
conf_mat = confusion_matrix(
        y_test, y_pred, labels = ['cat1', 'cat2', 'cat3', 'cat4', 'cat5'])

print(acc_score)
print(conf_mat)
8 và bộ thử nghiệm
from sklearn.naive_bayes import MultinomialNB # or any other NB model
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix

nb_classifier = MultinomialNB()

nb_classifier.fit(X_train, y_train)

y_pred = nb_classifier.predict(X_test)

acc_score = accuracy_score(y_test, y_pred)
conf_mat = confusion_matrix(
        y_test, y_pred, labels = ['cat1', 'cat2', 'cat3', 'cat4', 'cat5'])

print(acc_score)
print(conf_mat)
9, chúng tôi sử dụng
from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
0 của
from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
1 để thực hiện thuật toán Naive Bayes.

from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)

Chúng tôi lưu trữ các đầu ra dự đoán trong

from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
2, mà chúng tôi sẽ sử dụng cho một số số liệu dưới đây.

Sự chính xác

Số liệu đầu tiên chúng ta sẽ thảo luận là, có lẽ, đơn giản nhất, độ chính xác. Nó trả lời câu hỏi:accuracy. It answers the question:

"Làm thế nào thường xuyên, bộ phân loại đúng?"

Nó có thể thu được chỉ bằng cách sử dụng các công thức sau:

from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
1 cung cấp chức năng
from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
4 để có được độ chính xác:

from sklearn.metrics import accuracy_scoreprint(accuracy_score(y_test, y_pred))

Đầu ra cho thuật toán Naive Bayes là:

0.9907834101382489

Do đó, thuật toán lọc thư rác của chúng tôi có độ chính xác là 99%, nghĩa là đối với mỗi 100 email được phân loại, 99 được phân loại chính xác là thư rác hoặc không spam.

Điều này có nghĩa là thuật toán của chúng tôi có một hiệu suất tuyệt vời? Giả sử rằng bộ dữ liệu của chúng tôi có 99% email thực và 1% thư rác và chúng tôi đã xây dựng một trình phân loại dự đoán rằng tất cả các email là có thật. Sau đó, thuật toán này sẽ chính xác 99%, nhưng khủng khiếp trong việc phân loại thư rác! Điều quan trọng là phải có những cách khác để đo lường hiệu suất của thuật toán.

Ma trận hỗn loạn

Ma trận nhầm lẫn là một số liệu khác thường được sử dụng để đo lường hiệu suất của thuật toán phân loại. Đúng như tên của nó, thuật ngữ liên quan đến ma trận nhầm lẫn có thể khá khó hiểu, nhưng bản thân ma trận rất đơn giản để hiểu (không giống như các bộ phim).confusion matrix is another metric that is often used to measure the performance of a classification algorithm. True to its name, the terminology related to the confusion matrix can be rather confusing, but the matrix itself is simple to understand (unlike the movies).

Trong bài đăng này, hãy để tập trung vào các bộ phân loại nhị phân như với ví dụ lọc thư rác, trong đó mỗi email có thể là thư rác hoặc không spam. Ma trận nhầm lẫn sẽ có dạng sau:binary classifiers as with the spam filtering example, in which each email can be either spam or not spam. The confusion matrix will be of the following form:

Các lớp dự đoán được biểu diễn trong các cột của ma trận, trong khi các lớp thực tế nằm trong các hàng của ma trận. Sau đó chúng tôi có bốn trường hợp:

  • Tích cực thực sự (TP): Các trường hợp mà trình phân loại dự đoán ‘spam và các email thực sự là thư rác.: the cases for which the classifier predicted ‘spam’ and the emails were actually spam.
  • Đúng là phủ định (TN): Các trường hợp mà trình phân loại dự đoán ‘không phải spam, và các email thực sự là thật.: the cases for which the classifier predicted ‘not spam’ and the emails were actually real.
  • Sai dương (FP): Các trường hợp mà trình phân loại dự đoán ‘spam, nhưng các email thực sự là thật.: the cases for which the classifier predicted ‘spam’ but the emails were actually real.
  • Sai phủ định (FN): Các trường hợp mà trình phân loại dự đoán ‘không phải spam, nhưng các email thực sự là thư rác.: the cases for which the classifier predicted ‘not spam’ but the emails were actually spam.

Để tránh nhầm lẫn, lưu ý như sau. 'True' hoặc 'false' cho biết trình phân loại dự đoán chính xác của lớp, trong khi 'dương' hoặc 'âm' cho biết trình phân loại dự đoán lớp mong muốn (trong trường hợp này, 'dương' tương ứng với 'spam', vì đây là Loại email chúng tôi muốn dự đoán).

Các mục của ma trận nhầm lẫn là số lần xuất hiện của mỗi lớp cho bộ dữ liệu được phân tích. Hãy để có được ma trận nhầm lẫn cho thuật toán lọc thư rác của chúng tôi, bằng cách sử dụng hàm

from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
5:

from sklearn.metrics import confusion_matrixprint(confusion_matrix(y_test, y_pred))

Đầu ra là:

[[724   7]
[ 1 136]]

Hãy để giải thích những kết quả này.

  • Trong số 731 trường hợp thực tế của ‘không phải spam, (hàng đầu tiên), trình phân loại dự đoán chính xác 724 trong số chúng.
  • Trong số 137 trường hợp thực tế của ‘spam, (hàng thứ hai), trình phân loại dự đoán chính xác 136 trong số đó.
  • Trong số tất cả 868 email, trình phân loại dự đoán chính xác 860 trong số chúng.

Nhận xét cuối cùng này cho phép chúng tôi có được độ chính xác từ ma trận nhầm lẫn, bằng cách áp dụng các công thức sau:

Chúng tôi có được một lần nữa rằng 99% đầu ra dự đoán đã được phân loại chính xác. Tuy nhiên, ma trận nhầm lẫn cho phép chúng ta có một bức tranh tốt hơn về hiệu suất của thuật toán.

Độ chính xác, nhớ lại và ghi điểm F1

Bên cạnh độ chính xác, có một số biện pháp hiệu suất khác có thể được tính toán từ ma trận nhầm lẫn. Một số trong số chính thu được bằng cách sử dụng hàm

from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
6:

from sklearn.metrics import classification_report

print(classification_report(y_test, y_pred))

Đầu ra là:

		precision    recall    f1-score   support        
False 1.00 0.99 0.99 731
True 0.95 0.99 0.97 137
avg / total 0.99 0.99 0.99 868

Hãy để giải thích những kết quả này.

  • Độ chính xác: Nó trả lời câu hỏi:: it answers the question:

Khi nó dự đoán kết quả tích cực, nó có thường xuyên đúng không?

Điều này có được bằng cách sử dụng các công thức sau:

Độ chính xác thường được sử dụng khi mục tiêu là giới hạn số lượng dương tính giả (FP). Ví dụ, đây sẽ là số liệu tập trung vào nếu mục tiêu của chúng tôi với thuật toán lọc thư rác là để giảm thiểu số lượng email thực được phân loại là thư rác.

  • Nhớ lại: Nó trả lời câu hỏi:: it answers the question:

Khi đó thực sự là kết quả tích cực, nó có thường xuyên dự đoán chính xác không?

Điều này có được bằng cách sử dụng các công thức sau:

Độ chính xác thường được sử dụng khi mục tiêu là giới hạn số lượng dương tính giả (FP). Ví dụ, đây sẽ là số liệu tập trung vào nếu mục tiêu của chúng tôi với thuật toán lọc thư rác là để giảm thiểu số lượng email thực được phân loại là thư rác.

  • Nhớ lại: Nó trả lời câu hỏi:: this is just the harmonic mean of precision and recall:

Khi đó thực sự là kết quả tích cực, nó có thường xuyên dự đoán chính xác không?

Nhớ lại thường được sử dụng khi mục tiêu là giới hạn số lượng âm tính sai (FN). Trong ví dụ của chúng tôi, điều đó sẽ tương ứng để giảm thiểu số lượng email spam được phân loại là email thực. Nhớ lại còn được gọi là độ nhạy của người Viking và tỷ lệ tích cực thực sự (TPR).

F1-SCORE: Đây chỉ là giá trị trung bình hài hòa của độ chính xác và thu hồi:receiver operating characteristic (ROC) curve. It is created by plotting the true positive rate (TPR) (or recall) against the false positive rate (FPR), which we haven’t defined explicitly yet:

Nó rất hữu ích khi bạn cần tính đến cả độ chính xác và nhớ lại. Nếu bạn cố gắng chỉ tối ưu hóa việc thu hồi, thuật toán của bạn sẽ dự đoán hầu hết các ví dụ thuộc về lớp tích cực, nhưng điều đó sẽ dẫn đến nhiều dương tính sai và do đó, độ chính xác thấp. Mặt khác, nếu bạn cố gắng tối ưu hóa độ chính xác, mô hình của bạn sẽ dự đoán rất ít ví dụ là kết quả tích cực (những điều xác suất cao nhất), nhưng thu hồi sẽ rất thấp.

Đường cong ROC

Một cách trực quan hơn để đo lường hiệu suất của bộ phân loại nhị phân là đường cong đặc tính vận hành máy thu (ROC). Nó được tạo ra bằng cách vẽ tỷ lệ tích cực thực sự (TPR) (hoặc thu hồi) so với tỷ lệ dương tính giả (FPR), mà chúng tôi đã xác định rõ ràng:predicted probability for such event. Recall from my previous post that the probability of an email being spam, for example, given its features, is given by Bayes’ theorem,

Câu hỏi mà nó trả lời là như sau:

Khi đó thực sự là kết quả tiêu cực, nó có thường xuyên dự đoán không chính xác không?

y_pred_prob = nb.predict_proba(X_test)[:,1]

Hãy để xem làm thế nào chúng ta có thể có được đường cong này. Đầu tiên, lưu ý rằng thuật toán Bayes ngây thơ của chúng tôi không chỉ có thể dự đoán nếu mỗi email là thư rác hay không, nhưng nó cũng có thể cho chúng tôi xác suất dự đoán cho sự kiện đó. Nhớ lại từ bài viết trước của tôi rằng xác suất của một email là spam, ví dụ, được đưa ra bởi các tính năng của nó, được đưa ra bởi Định lý Bayes,threshold for the probability above which we classify the email as spam?

và chúng tôi giả định rằng người ngây thơ "rằng các tính năng độc lập với lớp học,

Xác suất dự đoán cho bộ kiểm tra có thể được lấy trong

from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
1 với:

from sklearn.naive_bayes import MultinomialNB # or any other NB model
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix

nb_classifier = MultinomialNB()

nb_classifier.fit(X_train, y_train)

y_pred = nb_classifier.predict(X_test)

acc_score = accuracy_score(y_test, y_pred)
conf_mat = confusion_matrix(
        y_test, y_pred, labels = ['cat1', 'cat2', 'cat3', 'cat4', 'cat5'])

print(acc_score)
print(conf_mat)
0

Bây giờ chúng tôi có xác suất dự đoán cho mỗi email, làm thế nào để chúng tôi quyết định xem đó có phải là thư rác dựa trên các giá trị của các xác suất đó không? Đó là, ngưỡng cho xác suất ở trên mà chúng tôi phân loại email là spam là gì?

  • Có vẻ hợp lý, ít nhất là lúc đầu, để lấy ngưỡng là 0,5. Điều tốt đẹp về đường cong ROC là chúng ta có thể hình dung cách hiệu suất của trình phân loại thay đổi khi chúng ta thay đổi ngưỡng.
  • Đầu tiên, hãy để Lông vẽ đường cong ROC cho trường hợp trong tay bằng cách nhập
    from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
    nb.fit(X_train, y_train)
    y_pred = nb.predict(X_test)
    8 từ
    from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
    nb.fit(X_train, y_train)
    y_pred = nb.predict(X_test)
    9, cho chúng ta tỷ lệ TP và FP:
  • Để hiểu cốt truyện này, hãy để phân tích nó trong các bước.
Giả sử chúng ta lấy ngưỡng là 0, nghĩa là tất cả các email được phân loại là thư rác. Một mặt, điều này ngụ ý rằng không có email spam nào được dự đoán là email thực và do đó không có tiêu cực sai - tỷ lệ tích cực thực sự (hoặc thu hồi) là 1. Mặt khác, điều này cũng có nghĩa là không có email thực sự được phân loại là Thực, và do đó không có tiêu cực thực sự-tỷ lệ dương tính giả cũng là 1. Điều này tương ứng với phần trên cùng bên phải của đường cong.
  • Bây giờ giả sử rằng ngưỡng là 1, nghĩa là không có email được phân loại là thư rác. Sau đó, không có tích cực thực sự (và do đó tỷ lệ dương thực sự là 0) và không có dương tính giả (và do đó tỷ lệ dương tính giả là 0). Điều này tương ứng với phía dưới bên trái của đường cong.

Phần còn lại của đường cong tương ứng với các giá trị của ngưỡng từ 0 đến 1, từ trên cùng bên phải đến phía dưới bên trái. Như bạn có thể thấy, đường cong tiếp cận (nhưng không đạt) góc của lô trong đó tốc độ TP là 1 và tỷ lệ FP là 0 - nghĩa là không có email spam được phân loại là thực và không có email thực sự được phân loại là spam . Đây là điểm phân loại hoàn hảo.AUC) is a good measure of the performance of the classification algorithm. If it is near 0.5, the classifier is not much better than random guessing, whereas it gets better as the area gets close to 1.

Chúng tôi có thể lấy AUC bằng cách nhập

from sklearn.metrics import accuracy_scoreprint(accuracy_score(y_test, y_pred))
0 từ
from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
9,

from sklearn.naive_bayes import MultinomialNB # or any other NB model
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix

nb_classifier = MultinomialNB()

nb_classifier.fit(X_train, y_train)

y_pred = nb_classifier.predict(X_test)

acc_score = accuracy_score(y_test, y_pred)
conf_mat = confusion_matrix(
        y_test, y_pred, labels = ['cat1', 'cat2', 'cat3', 'cat4', 'cat5'])

print(acc_score)
print(conf_mat)
1

Đầu ra cho trình phân loại của chúng tôi là:

from sklearn.naive_bayes import MultinomialNB # or any other NB model
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix

nb_classifier = MultinomialNB()

nb_classifier.fit(X_train, y_train)

y_pred = nb_classifier.predict(X_test)

acc_score = accuracy_score(y_test, y_pred)
conf_mat = confusion_matrix(
        y_test, y_pred, labels = ['cat1', 'cat2', 'cat3', 'cat4', 'cat5'])

print(acc_score)
print(conf_mat)
2

AUC thực sự khá gần với 1, và vì vậy trình phân loại của chúng tôi rất giỏi trong việc giảm thiểu các âm tính giả (spam được phân loại là có thật) và các tiêu cực thực sự (email thực được phân loại là thật).

Lưu ý rằng, vì chúng tôi đang lấy khu vực dưới toàn bộ đường cong ROC, kết quả không liên quan đến bất kỳ ngưỡng cụ thể nào. Do đó, AUC cao không cho chúng ta biết đây là ngưỡng tốt nhất để có được dự đoán phân loại hữu ích.

Đường cong chính xác

Như đã thảo luận ở trên, việc thay đổi ngưỡng cho xác suất dự đoán (trên đó chúng tôi phân loại email là spam) có ảnh hưởng đến hiệu suất của thuật toán. Ví dụ, tỷ lệ tích cực thực sự hoặc thu hồi là 0 là 0 nếu chúng ta đặt ngưỡng là 1, vì không có email nào được phân loại là thư rác, do đó, có thể có một ngưỡng nhỏ hơn. Nhưng việc thu hồi 1 không nhất thiết là một mô hình phân loại mọi thứ như thư rác đã thu hồi bằng 1, nhưng cũng có độ chính xác rất thấp, vì sẽ có rất nhiều dương tính giả.

Một cách tốt để minh họa sự đánh đổi này giữa độ chính xác và thu hồi là với đường cong chính xác. Nó có thể thu được bằng cách nhập

from sklearn.metrics import accuracy_scoreprint(accuracy_score(y_test, y_pred))
2 từ
from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
9:precision-recall curve. It can be obtained by importing
from sklearn.metrics import accuracy_scoreprint(accuracy_score(y_test, y_pred))
2 from
from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
9:

from sklearn.naive_bayes import MultinomialNB # or any other NB model
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix

nb_classifier = MultinomialNB()

nb_classifier.fit(X_train, y_train)

y_pred = nb_classifier.predict(X_test)

acc_score = accuracy_score(y_test, y_pred)
conf_mat = confusion_matrix(
        y_test, y_pred, labels = ['cat1', 'cat2', 'cat3', 'cat4', 'cat5'])

print(acc_score)
print(conf_mat)
3

Như với đường cong ROC, mỗi điểm trong lô tương ứng với một ngưỡng khác nhau. Ngưỡng bằng 0 ngụ ý rằng việc thu hồi là 1, trong khi ngưỡng bằng 1 ngụ ý rằng việc thu hồi là 0, do đó, ngưỡng thay đổi từ 0 đến 1 từ đỉnh bên trái đến dưới cùng bên phải của lô. Lưu ý rằng độ chính xác bắt đầu từ khoảng 0,7, vì có rất nhiều dương tính giả (email thực được phân loại là thư rác).

Với đường cong chính xác, thì càng gần góc trên bên phải, thuật toán càng tốt. Và do đó một khu vực lớn hơn dưới đường cong (AUC) chỉ ra rằng thuật toán có thu hồi cao hơn và độ chính xác cao hơn. Trong bối cảnh này, khu vực được gọi là độ chính xác trung bình và có thể đạt được bằng cách nhập

from sklearn.metrics import accuracy_scoreprint(accuracy_score(y_test, y_pred))
0 từ
from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
9,average precision and can be obtained by importing
from sklearn.metrics import accuracy_scoreprint(accuracy_score(y_test, y_pred))
0 from
from sklearn.naive_bayes import MultinomialNBnb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
9,

from sklearn.naive_bayes import MultinomialNB # or any other NB model
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix

nb_classifier = MultinomialNB()

nb_classifier.fit(X_train, y_train)

y_pred = nb_classifier.predict(X_test)

acc_score = accuracy_score(y_test, y_pred)
conf_mat = confusion_matrix(
        y_test, y_pred, labels = ['cat1', 'cat2', 'cat3', 'cat4', 'cat5'])

print(acc_score)
print(conf_mat)
4

Đầu ra cho trình phân loại của chúng tôi là:

from sklearn.naive_bayes import MultinomialNB # or any other NB model
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix

nb_classifier = MultinomialNB()

nb_classifier.fit(X_train, y_train)

y_pred = nb_classifier.predict(X_test)

acc_score = accuracy_score(y_test, y_pred)
conf_mat = confusion_matrix(
        y_test, y_pred, labels = ['cat1', 'cat2', 'cat3', 'cat4', 'cat5'])

print(acc_score)
print(conf_mat)
5

AUC thực sự khá gần với 1, và vì vậy trình phân loại của chúng tôi rất giỏi trong việc giảm thiểu các âm tính giả (spam được phân loại là có thật) và các tiêu cực thực sự (email thực được phân loại là thật).

Lưu ý rằng, vì chúng tôi đang lấy khu vực dưới toàn bộ đường cong ROC, kết quả không liên quan đến bất kỳ ngưỡng cụ thể nào. Do đó, AUC cao không cho chúng ta biết đây là ngưỡng tốt nhất để có được dự đoán phân loại hữu ích.

Đường cong chính xác

Ma trận nhầm lẫn trong Python là gì?

Ma trận nhầm lẫn là gì? Đó là một bảng được sử dụng trong các vấn đề phân loại để đánh giá các lỗi trong mô hình được thực hiện. Các hàng đại diện cho các lớp thực tế mà kết quả nên có. Trong khi các cột đại diện cho các dự đoán chúng tôi đã thực hiện. Sử dụng bảng này, thật dễ dàng để xem dự đoán nào là sai.a table that is used in classification problems to assess where errors in the model were made. The rows represent the actual classes the outcomes should have been. While the columns represent the predictions we have made. Using this table it is easy to see which predictions are wrong.

Ma trận nhầm lẫn có nghĩa là gì?

Một ma trận nhầm lẫn là một bảng được sử dụng để xác định hiệu suất của thuật toán phân loại.Một ma trận nhầm lẫn trực quan hóa và tóm tắt hiệu suất của thuật toán phân loại.a table that is used to define the performance of a classification algorithm. A confusion matrix visualizes and summarizes the performance of a classification algorithm.

Ma trận nhầm lẫn cho ví dụ là gì?

Ma trận nhầm lẫn là một phương pháp học máy hữu ích cho phép bạn đo lường thu hồi, độ chính xác, độ chính xác và đường cong AUC-ROC.Dưới đây được đưa ra là một ví dụ để biết các thuật ngữ tích cực thực sự, tiêu cực thực sự, âm tính giả và tiêu cực thực sự.Đúng là tích cực: Bạn dự đoán tích cực và hóa ra nó là đúng.a useful machine learning method which allows you to measure Recall, Precision, Accuracy, and AUC-ROC curve. Below given is an example to know the terms True Positive, True Negative, False Negative, and True Negative. True Positive: You projected positive and its turn out to be true.

Ma trận nhầm lẫn trong thống kê là gì?

Trong các phân tích dự đoán, một bảng nhầm lẫn (đôi khi còn được gọi là ma trận nhầm lẫn) là một bảng có hai hàng và hai cột báo cáo số lượng dương tính thực sự, âm tính giả, dương tính giả và tiêu cực thực sự.a table with two rows and two columns that reports the number of true positives, false negatives, false positives, and true negatives.