Ik gebruik scikit-learn voor de classificatie van tekstdocumenten (22000) tot 100 klassen. Ik gebruik de verwarringsmatrixmethode van scikit-learn voor het berekenen van de verwarringsmatrix.
model1 = LogisticRegression()
model1 = model1.fit(matrix, labels)
pred = model1.predict(test_matrix)
cm=metrics.confusion_matrix(test_labels,pred)
print(cm)
plt.imshow(cm, cmap='binary')
Zo ziet mijn verwarringsmatrix eruit:
[[3962 325 0 ..., 0 0 0]
[ 250 2765 0 ..., 0 0 0]
[ 2 8 17 ..., 0 0 0]
...,
[ 1 6 0 ..., 5 0 0]
[ 1 1 0 ..., 0 0 0]
[ 9 0 0 ..., 0 0 9]]
Ik krijg echter geen duidelijk of leesbaar plot. Is er een betere manier om dit te doen?
Antwoord 1, autoriteit 100%
je kunt plt.matshow()
gebruiken in plaats van plt.imshow()
of je kunt de heatmap
van de seaborn module gebruiken (zie documentatie) om de verwarringsmatrix te plotten
import seaborn as sn
import pandas as pd
import matplotlib.pyplot as plt
array = [[33,2,0,0,0,0,0,0,0,1,3],
[3,31,0,0,0,0,0,0,0,0,0],
[0,4,41,0,0,0,0,0,0,0,1],
[0,1,0,30,0,6,0,0,0,0,1],
[0,0,0,0,38,10,0,0,0,0,0],
[0,0,0,3,1,39,0,0,0,0,4],
[0,2,2,0,4,1,31,0,0,0,2],
[0,1,0,0,0,0,0,36,0,2,0],
[0,0,0,0,0,0,1,5,37,5,1],
[3,0,0,0,0,0,0,0,0,39,0],
[0,0,0,0,0,0,0,0,0,0,38]]
df_cm = pd.DataFrame(array, index = [i for i in "ABCDEFGHIJK"],
columns = [i for i in "ABCDEFGHIJK"])
plt.figure(figsize = (10,7))
sn.heatmap(df_cm, annot=True)
Antwoord 2, autoriteit 55%
@bninopaul’s antwoord is niet helemaal voor beginners
hier is de code die u kunt “kopiëren en uitvoeren”
import seaborn as sn
import pandas as pd
import matplotlib.pyplot as plt
array = [[13,1,1,0,2,0],
[3,9,6,0,1,0],
[0,0,16,2,0,0],
[0,0,0,13,0,0],
[0,0,0,0,15,0],
[0,0,1,0,0,15]]
df_cm = pd.DataFrame(array, range(6), range(6))
# plt.figure(figsize=(10,7))
sn.set(font_scale=1.4) # for label size
sn.heatmap(df_cm, annot=True, annot_kws={"size": 16}) # font size
plt.show()
Antwoord 3, autoriteit 29%
ALS u meer gegevensin uw verwarringsmatrix wilt, inclusief “totalenkolom” en “totalenregel“, en procenten (%) in elke cel, zoals matlab-standaard(zie afbeelding hieronder)
inclusief de Heatmap en andere opties…
Je zou veel plezier moeten hebben met de bovenstaande module, gedeeld in de github ; )
https://github.com/wcipriano/pretty-print-confusion-matrix
Deze module kan uw taak gemakkelijk uitvoeren en produceert de bovenstaande uitvoer met veel parameters om uw CM aan te passen: