2 svar
66 visningar
nteran är nöjd med hjälpen
nteran 140
Postad: 12 okt 2023 21:07

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

 

Hondel 1294
Postad: 12 okt 2023 23:03 Redigerad: 12 okt 2023 23:04

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

nteran 140
Postad: 13 okt 2023 01:56 Redigerad: 13 okt 2023 02:20

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!

Svara Avbryt
Close