2017-10-11 4 views
0

J'essaie de créer un modèle de régression linéaire en utilisant graphlab. J'ai 200 échantillons et 1 prédicteur. Mais je rencontrais « erreur de dépassement numérique », voici la sortie:régression linéaire graphlab terminée en raison de l'erreur de débordement numérique

model_all = graphlab.linear_regression.create(data2.tail(200), target='output', features=['input'],validation_set=None,l2_penalty=0.0002,solver = 'auto') 
Linear regression: 
-------------------------------------------------------- 
Number of examples   : 200 
Number of features   : 1 
Number of unpacked features : 1 
Number of coefficients : 2 
Starting Newton Method 
-------------------------------------------------------- 
+-----------+----------+--------------+--------------------+---------------+ 
| Iteration | Passes | Elapsed Time | Training-max_error | Training-rmse | 
+-----------+----------+--------------+--------------------+---------------+ 
+-----------+----------+--------------+--------------------+---------------+ 
TERMINATED: Terminated due to numerical overflow error. 
This model may not be ideal. To improve it, consider doing one of the following: 
(a) Increasing the regularization. 
(b) Standardizing the input data. 
(c) Removing highly correlated features. 
(d) Removing `inf` and `NaN` values in the training data 

indice (b), (c) et (d) ne pas appliquer à mon cas car il y a seulement 1 fonction et il n'y a pas inf ou des valeurs NaN. J'ai essayé divers l2_penalty mais tout ne sert à rien. Si je limite le nombre d'échantillons à un plus petit nombre tel que 180, cela fonctionnera.

model_all = graphlab.linear_regression.create(data2.tail(180), target='output', features=['input'],validation_set=None,l2_penalty=0.0002,solver = 'auto') 
model_all.get("coefficients").print_rows(num_rows=100) 
Linear regression: 
-------------------------------------------------------- 
Number of examples   : 180 
Number of features   : 1 
Number of unpacked features : 1 
Number of coefficients : 2 
Starting Newton Method 
-------------------------------------------------------- 
+-----------+----------+--------------+--------------------+---------------+ 
| Iteration | Passes | Elapsed Time | Training-max_error | Training-rmse | 
+-----------+----------+--------------+--------------------+---------------+ 
| 1   | 2  | 0.000866  | 9.873043   | 4.272624  | 
+-----------+----------+--------------+--------------------+---------------+ 
SUCCESS: Optimal solution found. 
+----------------+-------+------------------+-------------------+ 
|  name  | index |  value  |  stderr  | 
+----------------+-------+------------------+-------------------+ 
| (intercept) | None | 9.3412783539 | 3.80166353756 | 
| DOEDDIST.Index | None | 0.00226165438702 | 0.000975084975224 | 
+----------------+-------+------------------+-------------------+ 
[2 rows x 4 columns] 

Je ne comprends pas ce qui cause l'erreur de débordement numérique. Quelqu'un peut-il aider à expliquer?

Merci.

+0

Vous pouvez toujours choisir un autre solveur disponible si la résolution de cette tâche est tout ce dont vous avez besoin. Pour déboguer ceci, vous devriez probablement montrer les données, bien que votre observation soit vraiment étrange. – sascha

+0

Merci pour la réponse – Pollyanna

Répondre

0

J'ai doublé vérifié mes données et il y a en effet une entrée NaN. Ma faute. data.dropna(axis = 'index',how = 'any',inplace=True) le résout.