Найти оптимальный параметр регуляризации λ для каждого из многочленов степени 0, 1, 2,. , , 10. Постройте этот график. Сделай это на питоне - PullRequest
0 голосов
/ 27 июня 2018

Я использую функцию RidgeCV из библиотеки scikit. Учимся находить оптимальный параметр регуляризации в заданном диапазоне регрессии гребня. Я создал истинный вывод и сохранил его в массиве t [] с добавлением шума. У меня есть входные значения в X [], который содержит k элементов. Для каждого элемента k мы генерируем L значений шума, что является нормальным распределением, дающим k * L экземпляров t.

    ridge=make_pipeline(PolynomialFeatures(i),RidgeCV(alphas = lambdas, fit_intercept=False))
    ridge.fit(X[:, None], t)

Однако при выполнении этого я получаю следующую ошибку:

Enter the Number k:8
Enter the Number L:1
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:952: RuntimeWarning: divide by zero encountered in double_scalars
      w = ((v + alpha) ** -1) - (alpha ** -1)
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:953: RuntimeWarning: divide by zero encountered in double_scalars
      w[constant_column] = - (alpha ** -1)
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:955: RuntimeWarning: divide by zero encountered in double_scalars
      c = np.dot(U, self._diag_dot(w, UT_y)) + (alpha ** -1) * y
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:955: RuntimeWarning: invalid value encountered in add
      c = np.dot(U, self._diag_dot(w, UT_y)) + (alpha ** -1) * y
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:956: RuntimeWarning: divide by zero encountered in double_scalars
      G_diag = self._decomp_diag(w, U) + (alpha ** -1)
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:956: RuntimeWarning: invalid value encountered in add
      G_diag = self._decomp_diag(w, U) + (alpha ** -1)
    Polynomial of degree 1 and lambda_optimum =0.0 is:[nan nan]
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:952: RuntimeWarning: divide by zero encountered in double_scalars
      w = ((v + alpha) ** -1) - (alpha ** -1)
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:953: RuntimeWarning: divide by zero encountered in double_scalars
      w[constant_column] = - (alpha ** -1)
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:955: RuntimeWarning: divide by zero encountered in double_scalars
      c = np.dot(U, self._diag_dot(w, UT_y)) + (alpha ** -1) * y
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:955: RuntimeWarning: invalid value encountered in add
      c = np.dot(U, self._diag_dot(w, UT_y)) + (alpha ** -1) * y
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:956: RuntimeWarning: divide by zero encountered in double_scalars
      G_diag = self._decomp_diag(w, U) + (alpha ** -1)
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:956: RuntimeWarning: invalid value encountered in add
      G_diag = self._decomp_diag(w, U) + (alpha ** -1)
    Polynomial of degree 2 and lambda_optimum =0.0 is:[nan nan nan]
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:952: RuntimeWarning: divide by zero encountered in double_scalars
      w = ((v + alpha) ** -1) - (alpha ** -1)
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:953: RuntimeWarning: divide by zero encountered in double_scalars
      w[constant_column] = - (alpha ** -1)
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:955: RuntimeWarning: divide by zero encountered in double_scalars
      c = np.dot(U, self._diag_dot(w, UT_y)) + (alpha ** -1) * y
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:955: RuntimeWarning: invalid value encountered in add
      c = np.dot(U, self._diag_dot(w, UT_y)) + (alpha ** -1) * y
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:956: RuntimeWarning: divide by zero encountered in double_scalars
      G_diag = self._decomp_diag(w, U) + (alpha ** -1)
    C:\Users\Sankalp\PycharmProjects\MachineLearning\venv\lib\site-packages\sklearn\linear_model\ridge.py:956: RuntimeWarning: invalid value encountered in add
      G_diag = self._decomp_diag(w, U) + (alpha ** -1)

Пожалуйста, помогите! Заранее спасибо:)

1 Ответ

0 голосов
/ 27 июня 2018

Я не вижу ошибок в вашем сообщении. У вас предупреждений ; термин означает, что программное обеспечение считает, что оно имеет путь для продолжения. Я разместил ваше сообщение достаточно, чтобы получить результаты:

Polynomial of degree 7 and lambda_optimum =0.0 is:[ nan  nan  nan  nan  nan  nan  nan  nan]
Polynomial of degree 8 and lambda_optimum =0.005 is:[ 0.39440842  0.15084343 -3.20466228 -0.90279433  0.59119079  1.1348398
  1.08897586  0.72688052  0.22113213]
Polynomial of degree 9 and lambda_optimum =0.005 is:[ 0.39444127  0.1573405  -3.22312401 -0.9214617   0.58848021  1.15542306
  1.134718    0.79660069  0.31211144 -0.21590847]
Polynomial of degree 10 and lambda_optimum =0.005 is:[ 0.39403704  0.18160145 -3.25882822 -0.9706416   0.56285357  1.17181052
  1.19935923  0.90873149  0.46728508 -0.02381393 -0.5059829 ]

Этого достаточно?

Если вам нужно для устранения предупреждений, то вам нужно изучить алгоритм, чтобы узнать, как нулевые знаменатели получают свои значения. Проблема может быть естественным результатом вашего ввода - например, предоставление нулевых коэффициентов для начальных, неиспользуемых терминов (например, x ^ 10, когда вы подходите только для полинома 9-й степени). Начните с распечатки аргументов, которые вы отправляете в функцию проблемы; затем вручную смоделируйте алгоритм и посмотрите, где вы получите нулевое деление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...