- Naiv Bayes algoritm är en övervakad inlärningsalgoritm, som är baserad på Bayes teorem och används för att lösa klassificeringsproblem.
- Det används främst i textklassificering som inkluderar en högdimensionell träningsdatauppsättning.
- Naiv Bayes Classifier är en av de enkla och mest effektiva klassificeringsalgoritmerna som hjälper till att bygga de snabba maskininlärningsmodellerna som kan göra snabba förutsägelser.
- Några populära exempel på Naiv Bayes Algorithm är skräppostfiltrering, sentimental analys och klassificering av artiklar .
Varför heter det Naive Bayes?
Naiv Bayes-algoritmen består av två ord Naiv och Bayes, som kan beskrivas som:
Bayes sats:
- Bayes sats är också känd som Bayes regel eller Bayes lag , som används för att bestämma sannolikheten för en hypotes med förkunskaper. Det beror på den villkorade sannolikheten.
- Formeln för Bayes sats ges som:
Var,
P(A|B) är posterior sannolikhet : Sannolikhet för hypotes A om den observerade händelsen B.
P(B|A) är sannolikhet : Sannolikheten för bevisen givet att sannolikheten för en hypotes är sann.
P(A) är Prior Probability : Sannolikhet för hypotes innan man observerar bevisen.
P(B) är Marginal Sannolikhet : Sannolikhet för bevis.
Fungerar av Naive Bayes klassificerare:
Hur Naive Bayes klassificerare fungerar kan förstås med hjälp av exemplet nedan:
Anta att vi har en datauppsättning av väderförhållanden och motsvarande målvariabel ' Spela '. Så med hjälp av denna datauppsättning måste vi bestämma om vi ska spela eller inte en viss dag beroende på väderförhållandena. Så för att lösa detta problem måste vi följa stegen nedan:
- Konvertera den givna datamängden till frekvenstabeller.
- Generera sannolikhetstabell genom att hitta sannolikheterna för givna funktioner.
- Använd nu Bayes sats för att beräkna den bakre sannolikheten.
Problem : Om vädret är soligt, bör spelaren spela eller inte?
Lösning : För att lösa detta, överväg först datauppsättningen nedan:
Syn | Spela | |
---|---|---|
0 | Regnig | Ja |
1 | Solig | Ja |
2 | Mulen | Ja |
3 | Mulen | Ja |
4 | Solig | Nej |
5 | Regnig | Ja |
6 | Solig | Ja |
7 | Mulen | Ja |
8 | Regnig | Nej |
9 | Solig | Nej |
10 | Solig | Ja |
elva | Regnig | Nej |
12 | Mulen | Ja |
13 | Mulen | Ja |
Frekvenstabell för väderförhållandena:
Väder | Ja | Nej |
Mulen | 5 | 0 |
Regnig | 2 | 2 |
Solig | 3 | 2 |
Total | 10 | 5 |
Sannolikhetstabell väderförhållanden:
Väder | Nej | Ja | |
Mulen | 0 | 5 | 5/14 = 0,35 |
Regnig | 2 | 2 | 4/14=0,29 |
Solig | 2 | 3 | 5/14=0,35 |
Allt | 4/14=0,29 | 10/14=0,71 |
Tillämpa Bayes sats:
P(Ja|Soligt)= P(Soligt|Ja)*P(Ja)/P(Soligt)
hur man får iphone emojis på Android
P(Soligt|Ja)= 3/10= 0,3
P(Soligt)= 0,35
P(Ja)=0,71
Så P(Ja|Soligt) = 0,3*0,71/0,35= 0,60
css första barn
P(No|Soligt)= P(Soligt|Nej)*P(Nej)/P(Soligt)
P(Soligt|NEJ)= 2/4=0,5
P(Nej)=0,29
P(Soligt)= 0,35
Så P(Nej|Soligt)= 0,5*0,29/0,35 = 0,41
Så som vi kan se från ovanstående beräkning att P(Ja|Soligt)>P(Nej|Soligt)
Därför kan spelaren spela spelet på en solig dag.
Fördelar med Naiv Bayes Classifier:
- Naiv Bayes är en av de snabba och enkla ML-algoritmerna för att förutsäga en klass av datamängder.
- Den kan användas för både binära klassificeringar och multiklassklassificeringar.
- Det fungerar bra i multi-class prediktioner jämfört med de andra algoritmerna.
- Det är det mest populära valet för problem med textklassificering .
Nackdelar med Naiv Bayes Classifier:
- Naiv Bayes antar att alla funktioner är oberoende eller orelaterade, så den kan inte lära sig förhållandet mellan funktioner.
Tillämpningar av Naiv Bayes Classifier:
- Den används för Kreditpoäng .
- Den används i klassificering av medicinska uppgifter .
- Den kan användas i förutsägelser i realtid eftersom Naive Bayes Classifier är en ivrig lärande.
- Det används i textklassificering som t.ex Skräppostfiltrering och Sentimentanalys .
Typer av naiva Bayes-modeller:
Det finns tre typer av naiv Bayes-modell, som ges nedan:
Klassificeraren använder frekvensen av ord för prediktorerna.
Python-implementering av den naiva Bayes-algoritmen:
Nu kommer vi att implementera en naiv Bayes-algoritm med Python. Så för detta kommer vi att använda ' användardata ' dataset , som vi har använt i vår andra klassificeringsmodell. Därför kan vi enkelt jämföra Naive Bayes-modellen med de andra modellerna.
Steg att implementera:
- Steg för förbehandling av data
- Passar Naive Bayes till träningssetet
- Förutsäga testresultatet
- Testa resultatets noggrannhet (Skapa förvirringsmatris)
- Visualisera testsetresultatet.
1) Steg för dataförbehandling:
I detta steg kommer vi att förbearbeta/förbereda data så att vi kan använda dem effektivt i vår kod. Det är liknande som vi gjorde i dataförbehandling . Koden för detta ges nedan:
Importing the libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd # Importing the dataset dataset = pd.read_csv('user_data.csv') x = dataset.iloc[:, [2, 3]].values y = dataset.iloc[:, 4].values # Splitting the dataset into the Training set and Test set from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.25, random_state = 0) # Feature Scaling from sklearn.preprocessing import StandardScaler sc = StandardScaler() x_train = sc.fit_transform(x_train) x_test = sc.transform(x_test)
I koden ovan har vi laddat datamängden i vårt program med ' dataset = pd.read_csv('user_data.csv') . Den laddade datamängden är uppdelad i tränings- och testset, och sedan har vi skalat funktionsvariabeln.
pothineni bagge
Utdata för datamängden ges som:
2) Anpassa Naive Bayes till träningssetet:
Efter förbearbetningssteget kommer vi nu att anpassa Naive Bayes-modellen till träningssetet. Nedan är koden för det:
# Fitting Naive Bayes to the Training set from sklearn.naive_bayes import GaussianNB classifier = GaussianNB() classifier.fit(x_train, y_train)
I ovanstående kod har vi använt GaussianNB klassificerare för att anpassa den till träningsdatauppsättningen. Vi kan också använda andra klassificerare enligt våra krav.
Produktion:
Out[6]: GaussianNB(priors=None, var_smoothing=1e-09)
3) Förutsägelse av testuppsättningens resultat:
Nu kommer vi att förutsäga testsetresultatet. För detta kommer vi att skapa en ny prediktorvariabel y_pred , och kommer att använda prediktionsfunktionen för att göra förutsägelserna.
# Predicting the Test set results y_pred = classifier.predict(x_test)
Produktion:
Ovanstående utdata visar resultatet för prediktionsvektor y_pred och verklig vektor y_test. Vi kan se att vissa förutsägelser skiljer sig från de verkliga värdena, som är de felaktiga förutsägelserna.
4) Skapa förvirringsmatris:
Nu ska vi kontrollera noggrannheten hos Naive Bayes-klassificeraren med hjälp av förvirringsmatrisen. Nedan är koden för det:
# Making the Confusion Matrix from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred)
Produktion:
Som vi kan se i ovanstående förvirringsmatrisutdata finns det 7+3= 10 felaktiga förutsägelser och 65+25=90 korrekta förutsägelser.
5) Visualisera träningsuppsättningens resultat:
Därefter kommer vi att visualisera träningsuppsättningens resultat med hjälp av Na�ve Bayes Classifier. Nedan är koden för det:
# Visualising the Training set results from matplotlib.colors import ListedColormap x_set, y_set = x_train, y_train X1, X2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step = 0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(X1, X2, classifier.predict(nm.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('purple', 'green'))) mtp.xlim(X1.min(), X1.max()) mtp.ylim(X2.min(), X2.max()) for i, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Naive Bayes (Training set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show()
Produktion:
I ovanstående utdata kan vi se att Na�ve Bayes-klassificeraren har segregerat datapunkterna med den fina gränsen. Det är Gaussisk kurva som vi har använt GaussianNB klassificerare i vår kod.
6) Visualisera testsetresultatet:
# Visualising the Test set results from matplotlib.colors import ListedColormap x_set, y_set = x_test, y_test X1, X2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step = 0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(X1, X2, classifier.predict(nm.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('purple', 'green'))) mtp.xlim(X1.min(), X1.max()) mtp.ylim(X2.min(), X2.max()) for i, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Naive Bayes (test set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show()
Produktion:
Ovanstående utgång är slutgiltig utgång för testuppsättningsdata. Som vi kan se har klassificeraren skapat en Gauss-kurva för att dela in variablerna 'köpt' och 'ej köpt'. Det finns några felaktiga förutsägelser som vi har beräknat i förvirringsmatrisen. Men det är ändå ganska bra klassificerare.