Linjär regression med scipy
Jag ska skriva en funktion uppgift_c som tar ett filnamn som argument och returnerar α och β för en regressionsanalys på de datapunkter som hittas i filen.
Regressionsanalysen ska göras med funktionen scipy.stats.linregress(). I en tidigare uppgift untitled3 gjorde jag samma sak fast med endast mathplot & numpy. Jag återanvänder dem funktionerna load_data, plot_regression & save_plot_as_pdf.
Jag har svårt att förstå hur jag ska använda linregress(). Vet inte om jag har gjort rätt vid rad 24 & 31. Kanske det finns mer fel. Jag får ValueError: too many values to unpack (expected 2) när jag kör detta
Felmeddelandet säger i princip ”enligt koden förväntas att funktionen ska returnera 2 värden, men den returnerar färre”. Alltså, du har skrivit
alpha, beta = linregress(….)
vilket betyder att du förväntar dig att funktionen ska returnera två värden, alpha och beta.
När jag kollar dokumentationen för funktionen linregress (googla bara på scipy linregress) verkar det som att den returnerar ett objekt, men att detta har ett antal attribut. Så det skulle förklara felmeddelandet: funktionen returnerar ett (1) objekt, men du har skrivit koden som att du förväntar dig två objekt. Så spara resultatet från linregress i en variabel, och titta i dokumentationen för funktionen linregress vad attributen du är ute efter heter så kan du plocka ut dem och spara i variabler alpha och beta efteråt
Tack, jag läste på lite & hitta en lösning
alpha, beta, r, p, se = linregress(x_arr, y_arr)
return alpha, beta
Jag försökte använda min funktion plot_regression som visat i första bilden men jag fick helt fel plot & dessutom två så jag valde att skriva in det i min uppgift_c funktion istället.
Nu får jag rätt plot med rätt data. Dock får jag en extra fel plot utskriven. När jag dessutom tar bort rad 20-24 så får jag fortfarande en plot med (samma fel)data utskriven, men bara en.
Någon ide vad det kan bero på?
Edit: Löst det nu!