Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Sekaannusmatriisi | Mallien Vertailu
Luokittelu Pythonilla

bookSekaannusmatriisi

Kun tehdään ennuste binääriluokitus-ongelmassa, on olemassa vain neljä mahdollista lopputulosta:

Yllä olevassa kuvassa todelliset arvot (oikeat luokat) on järjestetty ylhäältä alas laskevaan järjestykseen, kun taas ennustetut arvot on järjestetty vasemmalta oikealle nousevaan järjestykseen. Tämä on scikit-learn-kirjaston oletusasettelu, kun se näyttää sekaannusmatriiseja.

Note
Huomio

Eri kirjastot tai visualisoinnit voivat käyttää erilaista järjestystä – esimerkiksi sijoittamalla todelliset arvot x-akselille ja ennustetut arvot y-akselille. Erona on kuitenkin vain asettelu; matriisin arvot pysyvät samoina.

Näitä tuloksia kutsutaan nimillä true positive (TP), true negative (TN), false positive (FP) ja false negative (FN). "true" tai "false" ilmaisee, onko ennuste oikea, kun taas "positive" tai "negative" viittaa siihen, onko ennustettu luokka 1 vai 0.

Tämä tarkoittaa, että voimme tehdä kahta tyyppistä virhettä: false positive ja false negative. False positive -ennustetta kutsutaan myös nimellä tyypin 1 virhe, kun taas false negative -ennustetta kutsutaan nimellä tyypin 2 virhe.

Sekoitusmatriisi

Ensimmäinen tapa tarkastella mallin suorituskykyä on järjestää ennusteet sekoitusmatriisiin seuraavasti:

Voit rakentaa sekoitusmatriisin Pythonissa käyttämällä confusion_matrix()-funktiota kirjastosta sklearn:

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)

Parempaa visualisointia varten voit käyttää heatmap()-funktiota kirjastosta seaborn:

sns.heatmap(conf_matrix)

Tässä on esimerkki siitä, miten lasketaan sekaannusmatriisi Random Forest -ennustukselle Titanic-aineistolla:

12345678910111213141516
import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred) sns.heatmap(conf_matrix, annot=True);
copy

Voimme myös piirtää prosenttiosuudet esiintymismäärien sijaan käyttämällä normalize-parametria:

conf_matrix = confusion_matrix(y_true, y_pred, normalize='all')
12345678910111213141516
import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred, normalize='all') sns.heatmap(conf_matrix, annot=True);
copy
question mark

Mikä on sekaannusmatriisin tarkoitus?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

Can you explain what each value in the confusion matrix represents?

What is the difference between a false positive and a false negative?

How do I interpret the normalized confusion matrix?

Awesome!

Completion rate improved to 4.17

bookSekaannusmatriisi

Pyyhkäise näyttääksesi valikon

Kun tehdään ennuste binääriluokitus-ongelmassa, on olemassa vain neljä mahdollista lopputulosta:

Yllä olevassa kuvassa todelliset arvot (oikeat luokat) on järjestetty ylhäältä alas laskevaan järjestykseen, kun taas ennustetut arvot on järjestetty vasemmalta oikealle nousevaan järjestykseen. Tämä on scikit-learn-kirjaston oletusasettelu, kun se näyttää sekaannusmatriiseja.

Note
Huomio

Eri kirjastot tai visualisoinnit voivat käyttää erilaista järjestystä – esimerkiksi sijoittamalla todelliset arvot x-akselille ja ennustetut arvot y-akselille. Erona on kuitenkin vain asettelu; matriisin arvot pysyvät samoina.

Näitä tuloksia kutsutaan nimillä true positive (TP), true negative (TN), false positive (FP) ja false negative (FN). "true" tai "false" ilmaisee, onko ennuste oikea, kun taas "positive" tai "negative" viittaa siihen, onko ennustettu luokka 1 vai 0.

Tämä tarkoittaa, että voimme tehdä kahta tyyppistä virhettä: false positive ja false negative. False positive -ennustetta kutsutaan myös nimellä tyypin 1 virhe, kun taas false negative -ennustetta kutsutaan nimellä tyypin 2 virhe.

Sekoitusmatriisi

Ensimmäinen tapa tarkastella mallin suorituskykyä on järjestää ennusteet sekoitusmatriisiin seuraavasti:

Voit rakentaa sekoitusmatriisin Pythonissa käyttämällä confusion_matrix()-funktiota kirjastosta sklearn:

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)

Parempaa visualisointia varten voit käyttää heatmap()-funktiota kirjastosta seaborn:

sns.heatmap(conf_matrix)

Tässä on esimerkki siitä, miten lasketaan sekaannusmatriisi Random Forest -ennustukselle Titanic-aineistolla:

12345678910111213141516
import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred) sns.heatmap(conf_matrix, annot=True);
copy

Voimme myös piirtää prosenttiosuudet esiintymismäärien sijaan käyttämällä normalize-parametria:

conf_matrix = confusion_matrix(y_true, y_pred, normalize='all')
12345678910111213141516
import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred, normalize='all') sns.heatmap(conf_matrix, annot=True);
copy
question mark

Mikä on sekaannusmatriisin tarkoitus?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 1
some-alt