Video: Jag maxade i bänkpress 31 dagar i rad! Mitt resultat + alla lyft 2024
En annan uppgift i predictive analytics är att klassificera nya data genom att förutsäga vilken klass ett måldata av data tillhör, givet en uppsättning oberoende variabler. Du kan till exempel klassificera en kund efter typ - säg som en högkvalitativ kund, en vanlig kund eller en kund som är redo att byta till en konkurrent - genom att använda ett beslutsträd.
För att se några användbara uppgifter om R-klassificeringsmodellen skriver du in följande kod:
Klasskolumnen berättar att du har skapat ett beslutsträd. För att se hur splittringarna bestäms kan du helt enkelt skriva in namnet på variabeln där du tilldelade modellen, i det här fallet modell, så här: >> modell Villkorligt inferensträd med 6 terminalnoder Svar: seedType Inputs: Område, omkrets, kompaktitet, längd, bredd, asymmetri, längd2 Antal observationer: 147 1) Område <= 16. 2; kriterium = 1, statistik = 123. 423 2) område <= 13. 37; kriterium = 1, statistik = 63. 549 3) längd2 4. 914 5) * vikter = 45 2) område> 13. 37 6) längd2 5. 396 8) * vikter = 8 1) område> 16 2 9) längd2 5. 877 11) * vikter = 40
Ännu bättre, du kan visualisera modellen genom att skapa en plot av beslutet träd med denna kod:> plot (modell)
Detta är en grafisk representation av ett beslutsträd. Du kan se att den övergripande formen efterliknar det som ett riktigt träd. Den är gjord av
noder(cirklarna och rektanglarna) och länkarna eller kanterna (anslutningslinjerna). Den första noden (från början) kallas rotnod
och noderna på botten av trädet (rektanglar) kallas terminalnoder . Det finns fem beslutskoder och sex terminala noder.
Börja vid rotnodet, vilket är nod 1 (numret visas i den lilla rutan längst upp i cirkeln). Bestäm baserat på attributet: Är observationen # 2 mindre än eller lika med (betecknad med <=) 16.2? svaret är ja, så rör dig längs vägen till nod 2.
Vid nod 2 frågar modellen: Är området 13. 37? Svaret är ja, så rör dig längs vägen till nod 6. Vid denna nod frågar modellen: Är längden2 <= 5.396? Det är, och du flyttar till terminal nr 7 och domen är att observation # 2 är av frö typ 1. Och det är faktiskt frö typ 1.
-
Modellen gör det för alla andra observationer för att förutsäga deras klasser.
-
För att få reda på om du har utbildat en bra modell, kontrollera den mot träningsdata. Du kan se resultaten i en tabell med följande kod: >> tabell (förutsäga (modell), trainSet $ seedType) 1 2 3 1 45 4 3 2 3 47 0 3 1 0 44
Resultaten visar att felet (eller felklassificeringsfrekvensen) är 11 av 147 eller 7 48 procent.
-
Med de beräknade resultaten är nästa steg att läsa tabellen.
Korrekta förutsägelser är de som visar kolumn- och radnummer som samma. Dessa resultat visas som en diagonal linje från vänster till vänster till höger; till exempel [1, 1], [2, 2], [3, 3] är antalet korrekta förutsägelser för den klassen.
Så för frö typ 1, förutspådde modellen det 45 gånger, medan man inte klassificerade fröet 7 gånger (4 gånger som frö typ 2 och 3 gånger som typ 3). För frö typ 2 förutspådde modellen det 47 gånger, medan det klassificerades 3 gånger. För frö typ 3, förutspådde modellen det 44 gånger, medan det endast klassificerades en gång.
-
Detta visar att det här är en bra modell. Så nu utvärderar du det med testdata. Här är koden som använder testdata för att förutsäga och lagra den i en variabel (testPrediction) för senare användning: >> testPrediction <- predict (model, newdata = testSet)
För att utvärdera hur modellen utfördes med testdata, se den i en tabell och beräkna felet, för vilket koden ser ut så här: >> tabell (testPrediction, testSet $ seedType) testPrediction 1 2 3 1 23 2 1 2 1 19 0 3 1 0 17