python 2.7 - gbt - Error de aserción durante el uso de LinearRegression
linear regression scala (2)
Este error típicamente significa que pasaste una matriz que no se puede resolver.
Entonces, en realidad no está relacionado con la longitud del vector
Verifique los códigos INFO: netlib.org/lapack/explore-html/d3/d62/dppsv_8f.html: el principal menor de la orden i de A no es definido definitivamente, por lo que la factorización no pudo completarse y la solución no se ha calculado
Intentaba ayudar a un amigo que intenta usar LinearRegression
en una señal. Los datos contienen 20,000 registros y solo dos columnas (tiempo y pulso) y lo estoy ejecutando en la Comunidad de Databricks. Mi enfoque es bastante simple y parcial, lo sé, traté de agregar más características artificiales, para esto creé esta función simple pero útil.
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())
Pensé que potenciar la función varias veces y dentro de un rango de valores me ayudaría a sobredimensionar la regresión, esta es la razón por la que ejecuté esto.
xf = df.select(featuresUDF(col("tiempo"), lit(12), lit(0.1)).alias("features"), col(" pulso").alias("label"))
Todo estaba bien, el DataFrame
solo tenía 2 columnas, una de características y la otra para la etiqueta. El problema aparece más adelante cuando trato de usar LinearRegression
sobre los datos.
lr = LinearRegression().setFeaturesCol("features").setLabelCol("label").setMaxIter(200)
lrm = lr.fit(xf)
Aquí el programa explota y muestra la siguiente excepción.
java.lang.AssertionError: assertion failed: lapack.dppsv devolvió 5.
¿Hay alguna forma de resolver esto? ¿O estoy haciendo algo mal?
Este problema se puede resolver usando el parámetro de solución para Regresión lineal.
val lf=new LinearRegression().setSolver("l-bfgs")
por defecto es normal.