Линейная регрессия графика прекращена из-за ошибки переполнения

Я пытаюсь создать модель линейной регрессии с использованием graphlab. У меня есть 200 образцов и 1 предиктор. Но я столкнулся с "числовой ошибкой переполнения", вот вывод:

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

Подсказка (b), (c) и (d) не применима к моему случаю, потому что есть только одна особенность и нет значений inf или NaN. Я пробовал различные l2_penalty, но все бесполезно. Если я ограничу количество выборок меньшим числом, например 180, это сработает.

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]

Я не понимаю, что вызывает ошибку числового переполнения. Может кто-нибудь помочь объяснить?

Спасибо.

1 ответ

Я дважды проверил свои данные, и действительно есть запись NaN. Виноват. data.dropna(axis = 'index',how = 'any',inplace=True) решает это.

Другие вопросы по тегам