Ich habe versucht, einen Freund zu helfen, der versucht, LinearRegression
in einem Signal zu verwenden. Daten enthalten 20.000 Datensätze und nur zwei Spalten (Zeit und Puls) und ich führe es in Databricks 'Community. Mein Ansatz ist ziemlich einfach und voreingenommen Ich weiß, ich habe versucht, mehr künstliche Merkmale hinzuzufügen, dafür habe ich diese einfache und dennoch nützliche Funktion erstellt.Assertionsfehler bei der Verwendung von LinearRegression
def featuresCreator(x, grad, acc):
if (grad > 0):
return [x ** grad]
else:
return [x ** grad] + featuresCreator(x, grad - acc, acc)
featuresUDF = udf(lambda x, grad, acc: DenseVector(featuresCreator(x, grad, acc)), VectorUDT())
Ich dachte, dass die Funktion mehrmals und innerhalb eines Bereichs von Werten Versorgung mir die Regression auf Überanpassung helfen würde, ist dies der Grund, warum ich das lief.
xf = df.select(featuresUDF(col("tiempo"), lit(12), lit(0.1)).alias("features"), col(" pulso").alias("label"))
Alles war in Ordnung die DataFrame
nur 2 Spalten hatte, eines der Merkmale und die andere für das Label. Das Problem tritt später auf, wenn ich versuche, LinearRegression
über die Daten zu verwenden.
lr = LinearRegression().setFeaturesCol("features").setLabelCol("label").setMaxIter(200)
lrm = lr.fit(xf)
Hier explodiert das Programm und zeigt die folgende Ausnahme.
java.lang.AssertionError: assertion failed: lapack.dppsv returned 5.
Gibt es eine Möglichkeit, dies zu lösen? Oder mache ich etwas falsch?
Diese Fehler bedeuten normalerweise, dass Sie eine Matrix übergeben haben, die nicht lösbar ist. – zero323
Also hängt es nicht mit der Länge des Vektors zusammen? –
Nein. Überprüfen Sie die INFO-Codes: http://www.netlib.org/lapack/explore-html/d3/d62/dppsv_8f.html: _der führende Minor der Ordnung I von A ist nicht positiv definit, so konnte die Faktorisierung nicht be abgeschlossen sein, und die Lösung wurde nicht berechnet – zero323