NumPy kleinste kwadraten

Numpy Kleinste Kwadraten



Vandaag gaan we leren over de kleinste kwadraten in lineaire vergelijkingen en hoe we de kleinste kwadratenmethode kunnen implementeren voor de beste pasvorm voor de regressielijn in de verstrekte datasets. Maar laten we eerst de basiskennis van NumPy krijgen. NumPy is een van de beste wiskundige pakketten van Python die services biedt voor multidimensionale arrays en matrices, samen met een breed scala aan complexe numerieke bewerkingen die op deze matrices/arrays kunnen worden uitgevoerd.

Een van de methoden van Python lstsq() wordt gebruikt om de regressielijn van de bekende lineaire vergelijking ax=b te vinden die het beste bij deze vergelijking past. Dit betekent dat u de lijn moet bepalen die de relatie tussen de x- en y-punten correct weergeeft als uw gegevens aangeven dat er een is. De lijn tussen beide punten staat bekend als een regressielijn wanneer deze wordt gebruikt om het kleinste kwadraat te vinden via deze vergelijking, ax=b.

Syntaxis:

Laten we beginnen met het leren van de implementatiestijl van de functie linalg.lstsq(). Eerst schrijven we de bibliotheeknaam die we in Python gebruiken, die 'numpy' is. Vervolgens voegen we de functie linalg() samen en voegen we de functie lstsq() samen. De functie linalg() betekent lineaire algebra. Het wordt altijd gebruikt met de functie lstsq() omdat het een lineaire algebraïsche uitdrukking is. Hierna geven we de argumenten tussen de functiehaakjes door.









Parameters:

Laten we de parameters van de functie linalg.lstsq() begrijpen:



punt1: Het is de coëfficiëntmatrix.





punt2: Deze matrix of array bevat afhankelijke variabelen.

rcond: Het datatype ervan is float. De rcond-ratio dient als grens voor kleinere singuliere waarden van punt_1. Als een singuliere waarde kleiner is dan de rcond maal het grootste singuliere element van punt_1, wordt deze als nul beschouwd bij het bepalen van de rangorde.



Winstwaarde:

In ruil daarvoor krijgen we het kleinste kwadraat van bekende variabele x in de vergelijking ax=b.

Voorbeeld 1:

Laten we beginnen met het implementeren van ons eerste voorbeeld van een kleinste-kwadratenmethode van de Python-bibliotheek, NumPy. Ten eerste hebben we een Python-compiler nodig zodat we erin kunnen coderen. Open de compiler. U moet ook de NumPy-bibliotheek installeren omdat we een van de functies van NumPy gebruiken, namelijk de functie lstsq(). Vervolgens moet u het NumPy-pakket erin importeren. Schrijf eerst het trefwoord 'import' dat de compiler vertelt dat we het pakket gaan importeren. Vervolgens moeten we de pakketnaam schrijven die we gebruiken in de functie die 'numpy' is. En dan schrijven we ook de alternatieve naam van de NumPy 'np' omdat veel programmeurs deze benadering gebruiken. Dit is een goede programmeeraanpak en het bespaart tijd.

Nadat we het pakket hebben geïmporteerd, beginnen we met het schrijven van de eigenlijke coderegel die we willen doen. We drukken de berichten eerst af, zodat de gebruiker gemakkelijk kan begrijpen wat we in het voorbeeld doen met behulp van de print()-instructie. We maken de eendimensionale array 'A' met de functie array() en drukken deze vervolgens af door de instructie print() aan te roepen. Vervolgens maken we nog een eendimensionale array 'B' met behulp van de array()-functie en drukken deze af met de print()-functie.

importeren numpy net zo bijv.

afdrukken ( 'Implementatie van de kleinste-kwadratenmethode in NumPy: ' )

EEN = bijv. reeks ( [ 1 , twee , 1 , 1 , 1 , twee , twee , 1 , 1 ] )

afdrukken ( ' \n De matrix A is: ' , EEN )

B = bijv. reeks ( [ 4 , 3 , 5 , 4 , twee , 3 , 6 , 3 , twee ] )

afdrukken ( ' \n De matrix B is: ' , B )

X = bijv. lijnzaad . lstsq ( bijv. vstack ( [ EEN , bijv. degenen ( enkel en alleen ( EEN ) ) ] ) . T , B , rcond = Geen ) [ 0 ]

afdrukken ( ' \n Het kleinste vierkant is: ' , X )

Na het maken van zowel de punten A als B, implementeren we de functie lstsq(). Maar eerst gebruiken we de functie vstack() om de elementen van 'A' op volgorde te stapelen. Vervolgens nemen we de transponering van array 'A'. Vervolgens geven we de functie vstack() door als het eerste argument van de functie lstsq(). Het tweede argument is de 'B' -array en het derde argument is 'rcond' waarin we de waarde van rcnd instellen op 'none'. Vervolgens slaan we de hele functie op in een andere array met de naam 'x', waaruit blijkt dat het de bekende variabele lineaire vergelijking is, ax=b. Hierna geven we de resultaten weer, dus we gebruiken hiervoor de print()-instructie en geven de 'x' -array erin door.

Voorbeeld 2:

Laten we nu beginnen met het implementeren van een ander voorbeeld van de kleinste kwadraten van NumPy. We importeren altijd eerst de bibliotheek die we gebruiken in het programma dat NumPy is. Eerst schrijven we het trefwoord 'import' om het pakket in het programma te krijgen. We schrijven ook de pakketnaam die 'numpy' is en dan zijn alias, 'np'. Vervolgens roepen we de methode print() aan, zodat we het retabelbericht van de kleinste kwadraten kunnen weergeven voor een beter begrip van de gebruiker.

Vervolgens maken we de arraynaam 'x_axis' en slaan de array erin op met de functie arange(). Vervolgens drukken we het af met de methode print(). Vervolgens maken we een andere arraynaam 'y_axis' en slaan we de array op die we in de volgende afbeelding hebben gemaakt.

Nadat we beide arrays hebben gemaakt, implementeren we de methode ones() op de x_axis-array en slaan deze op in een andere array met de naam 'array_a'. En dan drukken we deze array ook af. We maken een andere array met de naam 'arg_reg_line' en implementeren er een linalg.lstsq() -functie op. Vervolgens geven we de parameters door aan deze functie, zodat we de kleinste kwadraten tussen twee arrays of punten kunnen krijgen. De eerste parameter is dat we de transponering van array_a nemen. De tweede parameter is het tweede punt dat de y_as is. Dan hebben we 'rcond' die de waarde 'none' bevat. Vervolgens geven we de array weer met behulp van de methode print().

importeren numpy net zo bijv.

afdrukken ( 'Implementatie van linalg.lstsq() functie: ' )

x_as = bijv. regelen ( 0 , 10 )

afdrukken ( ' \n De waarde van de x-as is: ' , x_as )

y_as = [ 10.3 , 10.5 , elf , 11.5 , 13.2 , 13.9 , 14 , 15.5 , 16.6 , 17 ]

afdrukken ( ' \n De waarde van de y-as is: ' , y_as )

array_a = bijv. reeks ( [ x_as , bijv. degenen ( 10 ) ] )

afdrukken ( ' \n De matrix is: \n ' , array_a )

arg_reg_line = bijv. lijnzaad . lstsq ( array_a. T , y_as , rcond = Geen ) [ 0 ]

afdrukken ( ' \n De parameters van de regressielijn zijn: ' , arg_reg_line )

reg_line = arg_reg_line [ 0 ] * x_as + arg_reg_line [ 1 ]

importeren matplotlib. pyplot net zo plt

plv. verhaallijn ( x_as , reg_line , 'r-' )

plv. verhaallijn ( x_as , y_as , 'O' )

plv. titel ( 'Lineaire regressielijn' )

plv. xlabel ( 'X-as' )

plv. ylabel ( 'Y-as' )

plv. show ( )

Hier is de uitvoer van het eerder geïmplementeerde voorbeeld:

We importeren een ander pakket van NumPy, het 'matplotlib' -pakket dat wordt gebruikt om de grafiek te plotten. Vervolgens plotten we de x_axis-waarden en y_axis_values. Vervolgens stellen we de titel en labels van de grafiek in. Ten slotte geven we de grafiek weer met de methode show().

Hier is de gewenste grafiek van het gegeven voorbeeld:

Conclusie

In dit artikel hebben we geleerd wat het kleinste kwadraat is en hoe we de linalg.lstsq() van de onbekende variabele x krijgen met behulp van de lineaire vergelijking ax=b. We hebben meerdere functies van NumPy gebruikt om de kleinste kwadraten te vinden en enkele voorbeelden geïmplementeerd met gedetailleerde uitleg voor een beter begrip van de gebruiker.