Python- tutoriaal

Python TUIS Python Intro Python Begin Python-sintaksis Python-kommentaar Python veranderlikes Python-datatipes Python-nommers Python Casting Python Strings Python Booleans Python-operateurs Python-lyste Python Tuples Python-stelle Python Woordeboeke Python As...Anders Python While Loops Python vir lusse Python-funksies Python Lambda Python-skikkings Python-klasse/-voorwerpe Python Erfenis Python Iterators Python-omvang Python-modules Python-datums Python Wiskunde Python JSON Python RegEx Python PIP Python Probeer ... Behalwe Python-gebruikersinvoer Python String Formatering

Lêerhantering

Python-lêerhantering Python Lees lêers Python Skryf/skep lêers Python verwyder lêers

Python-modules

NumPy Tutoriaal Panda Walkthrough Scipy Tutoriaal

Python Matplotlib

Matplotlib Intro Matplotlib Begin Matplotlib Pyplot Matplotlib Plotte Matplotlib Merkers Matplotlib-lyn Matplotlib-etikette Matplotlib-rooster Matplotlib Subplotte Matplotlib Scatter Matplotlib Bars Matplotlib Histogramme Matplotlib sirkeldiagramme

Masjienleer

Aan die gang kom Gemiddelde mediaanmodus Standaard afwyking Persentiel Dataverspreiding Normale dataverspreiding Strooi plot Lineêre regressie Polinoomregressie Meervoudige regressie Skaal Trein/toets Besluitboom

Python MySQL

MySQL Begin MySQL Skep databasis MySQL Skep tabel MySQL-insetsel MySQL Kies MySQL Waar MySQL Bestel deur MySQL verwyder MySQL Drop Table MySQL-opdatering MySQL-limiet MySQL Sluit aan

Python MongoDB

MongoDB Begin MongoDB Skep databasis MongoDB Skep versameling MongoDB-insetsel MongoDB Vind MongoDB-navraag MongoDB Sorteer MongoDB verwyder MongoDB Drop Collection MongoDB-opdatering MongoDB-limiet

Python-verwysing

Python Oorsig Python ingeboude funksies Python-stringmetodes Python Lys Metodes Python Woordeboek Metodes Python Tuple Metodes Python Stel metodes Python-lêermetodes Python sleutelwoorde Python-uitsonderings Python Woordelys

Moduleverwysing

Ewekansige module Versoeke Module Statistiek Module Wiskunde Module cMath-module

Python Hoe om

Verwyder lys duplikate Draai 'n snaar om Voeg twee getalle by

Python voorbeelde

Python voorbeelde Python-samesteller Python-oefeninge Python Vasvra Python-sertifikaat

Masjienleer - Trein/toets


Evalueer jou model

In Masjienleer skep ons modelle om die uitkoms van sekere gebeurtenisse te voorspel, soos in die vorige hoofstuk waar ons die CO2-vrystelling van 'n motor voorspel het toe ons die gewig en enjingrootte geweet het.

Om te meet of die model goed genoeg is, kan ons 'n metode genaamd Train/Test gebruik.


Wat is trein/toets

Trein/toets is 'n metode om die akkuraatheid van jou model te meet.

Dit word Trein/Toets genoem omdat jy die datastel in twee stelle verdeel: 'n opleidingstel en 'n toetsstel.

80% vir opleiding en 20% vir toetsing.

Jy lei die model op deur die oefenstel te gebruik.

Jy toets die model deur die toetsstel te gebruik.

Trein die model beteken om die model te skep.

Toets die model beteken om die akkuraatheid van die model te toets.


Begin met 'n datastel

Begin met 'n datastel wat jy wil toets.

Ons datastel illustreer 100 klante in 'n winkel, en hul inkopiegewoontes.

Voorbeeld

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

plt.scatter(x, y)
plt.show()

Resultaat:

Die x-as verteenwoordig die aantal minute voordat 'n aankoop gedoen word.

Die y-as verteenwoordig die hoeveelheid geld wat aan die aankoop bestee is.



Verdeel in trein/toets

Die opleidingstel moet 'n ewekansige keuse van 80% van die oorspronklike data wees.

Die toetsstel moet die oorblywende 20% wees.

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]


Vertoon die opleidingstel

Vertoon dieselfde verspreidingsdiagram met die oefenstel:

Voorbeeld

plt.scatter(train_x, train_y)
plt.show()

Resultaat:

Dit lyk soos die oorspronklike datastel, so dit blyk 'n billike keuse te wees:


Vertoon die toetsstel

Om seker te maak die toetsstel is nie heeltemal anders nie, sal ons ook na die toetsstel kyk.

Voorbeeld

plt.scatter(test_x, test_y)
plt.show()

Resultaat:

Die toetsstel lyk ook soos die oorspronklike datastel:


Pas die datastel aan

Hoe lyk die datastel? Na my mening dink ek die beste passing sal 'n polinoomregressie wees , so kom ons trek 'n lyn van polinoomregressie.

Om 'n lyn deur die datapunte te trek, gebruik ons ​​die plot()metode van die matplotlib-module:

Voorbeeld

Trek 'n polinoom regressielyn deur die datapunte:

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

myline = numpy.linspace(0, 6, 100)

plt.scatter(train_x, train_y)
plt.plot(myline, mymodel(myline))
plt.show()

Resultaat:

Die resultaat kan my voorstel van die datastel wat by 'n polinoomregressie pas, ondersteun, al sou dit ons 'n paar vreemde resultate gee as ons probeer om waardes buite die datastel te voorspel. Voorbeeld: die lyn dui aan dat 'n klant wat 6 minute in die winkel spandeer 'n aankoop ter waarde van 200 sal maak. Dit is waarskynlik 'n teken van oorpas.

Maar wat van die R-kwadraat-telling? Die R-kwadraattelling is 'n goeie aanduiding van hoe goed my datastel by die model pas.


R2

Onthou jy R2, ook bekend as R-kwadraat?

Dit meet die verwantskap tussen die x-as en die y-as, en die waarde wissel van 0 tot 1, waar 0 geen verband beteken nie, en 1 totaal verwant beteken.

Die sklearn-module het 'n metode genoem r2_score() wat ons sal help om hierdie verhouding te vind.

In hierdie geval wil ons graag die verhouding meet tussen die minute wat 'n klant in die winkel bly en hoeveel geld hulle spandeer.

Voorbeeld

Hoe goed pas my opleidingsdata in 'n polinoomregressie?

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

r2 = r2_score(train_y, mymodel(train_x))

print(r2)

Let wel: Die resultaat 0.799 toon dat daar 'n OK verwantskap is.

Bring die toetsstel in

Nou het ons 'n model gemaak wat in orde is, ten minste wanneer dit by opleidingsdata kom.

Nou wil ons die model met die toetsdata ook toets, om te sien of ons dieselfde resultaat gee.

Voorbeeld

Kom ons vind die R2-telling wanneer toetsdata gebruik word:

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

r2 = r2_score(test_y, mymodel(test_x))

print(r2)

Let wel: Die resultaat 0.809 toon dat die model ook by die toetsstel pas, en ons is vol vertroue dat ons die model kan gebruik om toekomstige waardes te voorspel.


Voorspel waardes

Noudat ons vasgestel het dat ons model in orde is, kan ons nuwe waardes begin voorspel.

Voorbeeld

Hoeveel geld sal 'n koopkliënt spandeer as hy of sy 5 minute in die winkel bly?

print(mymodel(5))

Die voorbeeld het voorspel dat die kliënt 22,88 dollar sou bestee, soos blykbaar ooreenstem met die diagram: