2016-05-31 5 views
3

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?

+1

Diese Fehler bedeuten normalerweise, dass Sie eine Matrix übergeben haben, die nicht lösbar ist. – zero323

+0

Also hängt es nicht mit der Länge des Vektors zusammen? –

+1

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

Antwort

3

Diese Fehler bedeuten normalerweise, dass Sie eine Matrix passiert haben, die nicht lösbar ist.

Also eigentlich ist es nicht

Check INFO codes: netlib.org/lapack/explore-html/d3/d62/dppsv_8f.html: the leading minor of order i of A is not positive definite, so the factorization could not be completed, and the solution has not been computed

1

Dieses Problem gelöst werden kann unter Verwendung von Solver-Parameter für die lineare Regression auf die Länge des Vektors bezogen.

val lf=new LinearRegression().setSolver("l-bfgs") 

Standardmäßig ist es normal.

Verwandte Themen