Ik heb hulp nodig bij het begrijpen van de fout bij het uitvoeren van de bovenstaande code. Hieronder staat de fout:
“raise ValueError(“x en y moeten even groot zijn”)”
Ik heb een .csv-bestand met 1398 rijen en 2 kolommen. Ik heb 40% genomen als y_test set, zoals zichtbaar is in de bovenstaande code.
Antwoord 1, autoriteit 100%
Druk X_train-vorm af. Wat zie je? Ik wed dat X_train
2d is (matrix met een enkele kolom), terwijl y_train
1d (vector) is. Op zijn beurt krijg je verschillende maten.
Ik denk dat het gebruik van X_train[:,0]
voor het plotten (waar de fout vandaan komt) het probleem zou moeten oplossen
Antwoord 2, autoriteit 19%
Snijden met [:, :-1]
geeft je een 2-dimensionalearray (inclusief alle rijen en alle kolommen behalve de laatste kolom).
Snijden met [:, 1]
geeft je een 1-dimensionalearray (inclusief alle rijen uit de tweede kolom). Om deze array ook 2-dimensionaal te maken, gebruikt u [:, 1:2]
of [:, 1].reshape(-1, 1)
of [:, 1][:, None]
in plaats van [:, 1]
. Dit maakt x
en y
vergelijkbaar.
Een alternatief voor het tweedimensionaal maken van beide arrays is ze beide eendimensionaal te maken. Hiervoor zou men [:, 0]
(in plaats van [:, :1]
) doen voor het selecteren van de eerste kolom en [:, 1]
voor het selecteren van de tweede kolom.
Antwoord 3, autoriteit 8%
Probeer dit:
x_train=np.arange(0,len(x_train),1)
Het maakt een gelijkmatig verdeelde array
en je error
is definitief verdwenen.
Antwoord 4
In mijn geval was het probleem dat de grootte van test_size afweek van het bereik van de spreidingsplot. Het bereik moet hetzelfde zijn als de test_size (40% in uw code) van de totale waarneming. Hier moet u het bereik van uw spreidingsplot instellen op 40% van de totale waarnemingen die u in uw model verwerkt.