Rating@Mail.ru

Форум по операционной системе GNU/Linux и свободному программному обеспечению


Текущее время: 11 дек 2017, 03:31

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Python анализ данных
Непрочитанное сообщениеДобавлено: 12 ноя 2017, 13:55 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10248
Откуда: Харьков
Python - чуть ли не идеальный язык (по скорости разработки кода) для анализа больших объёмов числовых данных ... соизмеримый с такими специализированными для этого инструментами как MathCad и MathLab.

В Python это достигается за счёт великого множества пакетов наработанных для этих целей ... а множество пакеты - за счёт высокоуровневых структур данных Python. Один из таких пакетов - описанный здесь Python: NumPy ... но не только он.

Понадобились мне некоторые из известных алгоритмов обработки, использование их в Python. Здесь зафиксирую, на память, то, что использовалось...


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python анализ данных
Непрочитанное сообщениеДобавлено: 12 ноя 2017, 14:19 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10248
Откуда: Харьков
Линейная регрессия - один из простейших методов приближения и интерполяции экспериментальных или табличных данных ... самый простой, но иногда достаточный и эффективный.
Но меня интересовала линейная регрессия таблично заданной функции 2-х переменных.
Это позволила решить библиотека scikit-learn (достаточно новая - после 2010г.):
Цитата:
Thursday, January 22, 2015
Введение в scikit-learn
Изображение
Если вы используете Python и хотите найти надежную и удобную библиотеку для применения различных алгоритмов машинного обучения в своей системе, то однозначно стоит взглянуть на scikit-learn.
...
В 2010 году INRIA подключилась к работе над библиотекой и первая версия (v0.1 beta) была выпущена в конце января 2010.
На текущий момент в проекте задействовано более 30 активных участников и имеется финансовая поддержка от INRIA, Google, Tinyclues и Python Software Foundation.

Линейная регрессия в Python (Scikit-learn)
Цитата:
Данная статья описывает применение линейной регрессии, все примеры проиллюстрированы вычислениями в python с использованием библиотеки scikit-learn.


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python анализ данных
Непрочитанное сообщениеДобавлено: 12 ноя 2017, 14:27 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10248
Откуда: Харьков
Olej писал(а):
Это позволила решить библиотека scikit-learn

Код:
[olej@dell Подзоров]$ lsb_release -a
LSB Version:   :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID:   Fedora
Description:   Fedora release 23 (Twenty Three)
Release:   23
Codename:   TwentyThree

Чтобы не искать по исходникам:
Код:
[olej@dell ~]$ dnf list '*scikit*'
Последняя проверка окончания срока действия метаданных: 4 days, 7:25:28 назад, Tue Nov  7 18:04:00 2017.
Доступные пакеты
python-scikit-image.x86_64                                        0.11.3-6.fc23                                       updates-testing
python-scikit-learn.x86_64                                        0.17-1.fc23                                         updates
python3-scikit-image.x86_64                                       0.11.3-6.fc23                                       updates-testing
python3-scikit-learn.x86_64                                       0.17-1.fc23                                         updates
scikit-image-tools.noarch                                         0.11.3-6.fc23                                       updates-testing

Код:
[olej@dell ~]$ dnf info python-scikit-learn
Последняя проверка окончания срока действия метаданных: 4 days, 7:36:40 назад, Tue Nov  7 18:04:00 2017.
Доступные пакеты
Имя         : python-scikit-learn
Архитектура : x86_64
Эпоха       : 0
Версия      : 0.17
Релиз       : 1.fc23
Размер      : 3.9 M
Репозиторий : updates
Краткое опи : Machine learning in Python
URL         : http://scikit-learn.org/
Лицензия    : BSD
Описание    : Scikit-learn integrates machine learning algorithms in the tightly-knit
            : scientific Python world, building upon numpy, scipy, and matplotlib.
            : As a machine-learning module, it provides versatile tools for data mining and
            : analysis in any field of science and engineering. It strives to be simple and
            : efficient, accessible to everybody, and reusable in various contexts.

Устанавливаем:
Код:
[olej@dell ~]$ sudo dnf install python-scikit-learn
[sudo] пароль для olej:
Последняя проверка окончания срока действия метаданных: 0:51:37 назад, Sun Nov 12 00:51:19 2017.
Зависимости разрешены.
=====================================================================================================================================
 Package                                Архитектура               Версия                            Репозиторий                Размер
=====================================================================================================================================
Установка:
 blas                                   x86_64                    3.5.0-12.fc23                     fedora                     406 k
 lapack                                 x86_64                    3.5.0-12.fc23                     fedora                     5.8 M
 numpy-f2py                             x86_64                    1:1.9.2-2.fc23                    fedora                     248 k
 python-scikit-learn                    x86_64                    0.17-1.fc23                       updates                    3.9 M
 python2-joblib                         noarch                    0.9.3-2.fc23                      updates                    266 k
 scipy                                  x86_64                    0.14.1-1.fc22                     fedora                      10 M

Результат операции
=====================================================================================================================================
Установка  6 Пакетов

Объем загрузки: 21 M
Объем изменений: 67 M
Продолжить? [д/Н]: y
Загрузка пакетов:
(1/6): python-scikit-learn-0.17-1.fc23.x86_64.rpm                                                    1.0 MB/s | 3.9 MB     00:03   
(2/6): numpy-f2py-1.9.2-2.fc23.x86_64.rpm                                                            704 kB/s | 248 kB     00:00   
(3/6): blas-3.5.0-12.fc23.x86_64.rpm                                                                 779 kB/s | 406 kB     00:00   
(4/6): python2-joblib-0.9.3-2.fc23.noarch.rpm                                                        744 kB/s | 266 kB     00:00   
(5/6): lapack-3.5.0-12.fc23.x86_64.rpm                                                               1.0 MB/s | 5.8 MB     00:05   
(6/6): scipy-0.14.1-1.fc22.x86_64.rpm                                                                1.4 MB/s |  10 MB     00:07   
-------------------------------------------------------------------------------------------------------------------------------------
Общий размер                                                                                         2.4 MB/s |  21 MB     00:08     
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
  Установка    : python2-joblib-0.9.3-2.fc23.noarch                                                                              1/6
  Установка    : blas-3.5.0-12.fc23.x86_64                                                                                       2/6
  Установка    : lapack-3.5.0-12.fc23.x86_64                                                                                     3/6
  Установка    : numpy-f2py-1:1.9.2-2.fc23.x86_64                                                                                4/6
  Установка    : scipy-0.14.1-1.fc22.x86_64                                                                                      5/6
  Установка    : python-scikit-learn-0.17-1.fc23.x86_64                                                                          6/6
  Проверка     : python-scikit-learn-0.17-1.fc23.x86_64                                                                          1/6
  Проверка     : scipy-0.14.1-1.fc22.x86_64                                                                                      2/6
  Проверка     : lapack-3.5.0-12.fc23.x86_64                                                                                     3/6
  Проверка     : numpy-f2py-1:1.9.2-2.fc23.x86_64                                                                                4/6
  Проверка     : blas-3.5.0-12.fc23.x86_64                                                                                       5/6
  Проверка     : python2-joblib-0.9.3-2.fc23.noarch                                                                              6/6

Установлено:
  blas.x86_64 3.5.0-12.fc23                      lapack.x86_64 3.5.0-12.fc23                numpy-f2py.x86_64 1:1.9.2-2.fc23       
  python-scikit-learn.x86_64 0.17-1.fc23         python2-joblib.noarch 0.9.3-2.fc23         scipy.x86_64 0.14.1-1.fc22             

Выполнено!


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python анализ данных
Непрочитанное сообщениеДобавлено: 12 ноя 2017, 14:42 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10248
Откуда: Харьков
Olej писал(а):
Устанавливаем:

Проверяю:
Код:
[olej@dell ~]$ python
Python 2.7.11 (default, Sep 29 2016, 13:33:00)
[GCC 5.3.1 20160406 (Red Hat 5.3.1-6)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> X = [[0, 0], [1, 1], [2, 2]]
>>> Y = [0, 1.5, 3]
>>> from sklearn import linear_model
>>> clf = linear_model.LinearRegression()
>>> clf.fit( X, Y )
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
>>> clf.coef_
array([ 0.75,  0.75])
>>> clf.predict( X )
array([ 0. ,  1.5,  3. ])
>>>

Код:
[olej@dell ~]$ python
Python 2.7.11 (default, Sep 29 2016, 13:33:00)
[GCC 5.3.1 20160406 (Red Hat 5.3.1-6)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from sklearn import linear_model
>>> clf = linear_model.LinearRegression()
>>> X = [[0, 0], [0, 1], [1, 0]]
>>> Y = [0, 3, 1]
>>> clf.fit( X, Y )
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
>>> clf.coef_
array([ 1.,  3.])
>>> clf.predict( X )
array([  1.11022302e-15,   3.00000000e+00,   1.00000000e+00])
>>> clf.predict( (1, 1) )
/usr/lib64/python2.7/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.
  DeprecationWarning)
array([ 4.])
>>>

Код:
>>>
>>> Y = [2, 5, 3]
>>> clf.fit( X, Y )
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
>>> clf.coef_
array([ 1.,  3.])
>>> clf.predict( X )
array([ 2.,  5.,  3.])
>>>


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python анализ данных
Непрочитанное сообщениеДобавлено: 12 ноя 2017, 14:46 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10248
Откуда: Харьков
Olej писал(а):
Но меня интересовала линейная регрессия таблично заданной функции 2-х переменных.
Это позволила решить библиотека scikit-learn (достаточно новая - после 2010г.):

Вот моя исходная таблица и её регрессионная обработка:
Код:
# -*- coding: utf-8 -*-
from sklearn import linear_model
import numpy as np

X13 = [ (   75,  50 ), (   75,  150 ), (   75,  300 ), (   75,  500 ),
        (  175,  50 ), (  175,  150 ), (  175,  300 ), (  175,  500 ), (  175,  700 ),
                (  325,  150 ), (  325,  300 ), (  325,  500 ), (  325,  700 ), (  325,  900 ),
                (  325, 1100 ), (  325, 1300 ), (  325, 1500 ), (  325, 1700 ), (  325, 1900 ),
                        (  475,  500 ), (  475,  700 ), (  475,  900 ), (  475, 1100 ), (  475, 1300 ),
                        (  475, 1500 ), (  475, 1700 ), (  475, 1900 ), (  475, 2100 ), (  475, 2350 ),
                        (  625,  500 ), (  625,  700 ), (  625,  900 ), (  625, 1100 ), (  625, 1300 ),
                        (  625, 1500 ), (  625, 1700 ), (  625, 1900 ), (  625, 2100 ), (  625, 2350 ),
                        (  625, 2750 ),
                                (  850, 1100 ), (  850, 1300 ), (  850, 1500 ), (  850, 1700 ), (  850, 1900 ),
                                (  850, 2100 ), (  850, 2350 ), (  850, 2750 ), (  850, 3250 ), (  850, 3750 ),
                                        ( 1150, 1500 ), ( 1150, 1700 ), ( 1150, 1900 ), ( 1150, 2100 ), ( 1150, 2350 ),
                                        ( 1150, 2750 ), ( 1150, 3250 ), ( 1150, 3750 ), ( 1150, 4250 ),
                                                ( 1450, 1700 ), ( 1450, 1900 ), ( 1450, 2100 ), ( 1450, 2350 ), ( 1450, 2750 ),
                                                ( 1450, 3250 ), ( 1450, 3750 ), ( 1450, 4250 ), ( 1450, 4750 ), ( 1450, 5250 ),
                                                        ( 1750, 2100 ), ( 1750, 2350 ), ( 1750, 2750 ), ( 1750, 3250 ), ( 1750, 3750 ),
                                                        ( 1750, 4250 ), ( 1750, 4750 ), ( 1750, 5250 ),
                                                                ( 2050, 2350 ), ( 2050, 2750 ), ( 2050, 3250 ), ( 2050, 3750 ), ( 2050, 4250 ),
                                                                ( 2050, 4750 ), ( 2050, 5250 ),
                                                                        ( 2400, 2350 ),( 2400, 2750 ),( 2400, 3250 ),( 2400, 3750 ),( 2400, 4250 ), 
                                                                        ( 2400, 4750 ),( 2400, 5250 ),
                                                                                ( 2900, 2350 ), ( 2900, 2750), ( 2900, 3250 ), ( 2900, 3750 ), ( 2900, 4250 ),
                                                                                ( 2900, 4750 ), ( 2900, 5250 ),
                                                                                        ( 3500, 2750 ), ( 3500, 3250 ), ( 3500, 3750 ), ( 3500, 4250 ), ( 3500, 4750 ),
                                                                                        ( 3500, 5250 ), 
     ]

H1 = [  1.3, 1.6, 2.0, 2.2,             
        1.4, 1.7, 2.1, 2.4, 2.6,
             1.8, 2.3, 2.5, 2.7, 2.9, 3.1, 3.2, 3.4, 3.5, 3.6,
                       2.6, 2.8, 3.0, 3.2, 3.3, 3.5, 3.6, 3.7, 3.8, 4.0,
                       2.7, 2.9, 3.1, 3.3, 3.4, 3.6, 3.7, 3.8, 3.9, 4.1, 4.3,
                                      3.4, 3.5, 3.7, 3.8, 3.9, 4.0, 4.3, 4.4, 4.6, 4.8,
                                                3.8, 3.9, 4.0, 4.1, 4.4, 4.5, 4.8, 4.9, 5.1,
                                                     4.0, 4.1, 4.2, 4.4, 4.6, 4.8, 5.0, 5.2, 5.4, 5.5,
                                                               4.3, 4.5, 4.7, 4.9, 5.1, 5.3, 5.5, 5.6,
                                                                    4.6, 4.8, 5.0, 5.2, 5.4, 5.6, 5.7,
                                                                    4.6, 4.8, 5.1, 5.3, 5.4, 5.6, 5.8,
                                                                    4.7, 4.9, 5.2, 5.4, 5.5, 5.7, 5.9,
                                                                         5.0, 5.2, 5.4, 5.6, 5.8, 6.0,
     ]

print( 'размерность данных = {}/{}'.format( len( X13 ), len( H1 ) ) )
print( 'исходные значения H1:\n{}'.format(  H1 ) )

regr = linear_model.LinearRegression()        # Create linear regression object
regr.fit( X13, H1 )                           # Train the model using the training sets
print( 'коэффициенты регрессии: {}'.format( regr.coef_ ) )

RX13 = regr.predict( X13 )
print( 'восстановленные значения H1:\n{}'.format(  RX13 ) )
print( 'суммарное расхождение = {}'.format( np.sum( ( RX13 - H1 ) ** 2 ) ) )
print( 'среднее расхождение = {}'.format( np.mean( ( RX13 - H1 ) ** 2 ) ) )

Как видно, это разреженная таблица ... что особенно интересно.


Вложения:
R1.py [4.57 КБ]
Скачиваний: 2
Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python анализ данных
Непрочитанное сообщениеДобавлено: 12 ноя 2017, 14:53 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10248
Откуда: Харьков
Olej писал(а):
Вот моя исходная таблица и её регрессионная обработка:

Выполнение:
Код:
$ python R1.py
размерность данных = 104/104
исходные значения H1:
[1.3, 1.6, 2.0, 2.2, 1.4, 1.7, 2.1, 2.4, 2.6, 1.8, 2.3, 2.5, 2.7, 2.9, 3.1, 3.2, 3.4, 3.5, 3.6, 2.6, 2.8, 3.0, 3.2, 3.3, 3.5, 3.6, 3.7, 3.8, 4.0, 2.7, 2.9, 3.1, 3.3, 3.4, 3.6, 3.7, 3.8, 3.9, 4.1, 4.3, 3.4, 3.5, 3.7, 3.8, 3.9, 4.0, 4.3, 4.4, 4.6, 4.8, 3.8, 3.9, 4.0, 4.1, 4.4, 4.5, 4.8, 4.9, 5.1, 4.0, 4.1, 4.2, 4.4, 4.6, 4.8, 5.0, 5.2, 5.4, 5.5, 4.3, 4.5, 4.7, 4.9, 5.1, 5.3, 5.5, 5.6, 4.6, 4.8, 5.0, 5.2, 5.4, 5.6, 5.7, 4.6, 4.8, 5.1, 5.3, 5.4, 5.6, 5.8, 4.7, 4.9, 5.2, 5.4, 5.5, 5.7, 5.9, 5.0, 5.2, 5.4, 5.6, 5.8, 6.0]
коэффициенты регрессии: [ 0.00030463  0.00059836]
восстановленные значения H1:
[ 2.3257561   2.38559162  2.47534492  2.59501597  2.35621915  2.41605468
  2.50580797  2.62547903  2.74515008  2.46174926  2.55150255  2.67117361
  2.79084466  2.91051572  3.03018677  3.14985783  3.26952889  3.38919994
  3.508871    2.71686819  2.83653924  2.9562103   3.07588136  3.19555241
  3.31522347  3.43489452  3.55456558  3.67423664  3.82382546  2.76256277
  2.88223383  3.00190488  3.12157594  3.24124699  3.36091805  3.48058911
  3.60026016  3.71993122  3.86952004  4.10886215  3.19011781  3.30978887
  3.42945992  3.54913098  3.66880203  3.78847309  3.93806191  4.17740402
  4.47658166  4.7757593   3.52084908  3.64052014  3.7601912   3.87986225
  4.02945107  4.26879318  4.56797082  4.86714846  5.1663261   3.7319093
  3.85158036  3.97125141  4.12084023  4.36018235  4.65935999  4.95853763
  5.25771527  5.55689291  5.85607055  4.06264058  4.2122294   4.45157151
  4.75074915  5.04992679  5.34910443  5.64828207  5.94745971  4.30361856
  4.54296067  4.84213831  5.14131595  5.44049359  5.73967123  6.03884887
  4.41023925  4.64958136  4.948759    5.24793664  5.54711428  5.84629192
  6.14546956  4.56255452  4.80189663  5.10107427  5.40025191  5.69942955
  5.99860719  6.29778483  4.98467496  5.2838526   5.58303024  5.88220788
  6.18138552  6.48056316]
суммарное расхождение = 8.11659710613
среднее расхождение = 0.0780442029436

Как видно, приближение линейной регрессии имеет плохую сходимость... Но это проблема не библиотеки или метода, а данных, которые плохо аппроксимируются линейно.
Но сам метод линейной регрессии для нескольких переменных работает "на ура".


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python анализ данных
Непрочитанное сообщениеДобавлено: 12 ноя 2017, 15:29 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10248
Откуда: Харьков
Olej писал(а):
Но меня интересовала линейная регрессия таблично заданной функции 2-х переменных.

Следующая интересующая меня реализация - оптимизация (нахождение точки максимума или минимума) функции общего вида (нелинейная) нескольких переменных.
Вида: Y = F( X1, X2, X3, ... Xn)
Для такой (весьма сложной) задачи разработаны и описаны (целые книги) множество методов ... таких, например, как флексиплекс - метод деформируемого симплекса и др.
Но мне нужны реализации методов в Puthon без влезания в глубину алгоритмики для каждого случая (это всё я уже проходил много лет назад ;-) ).

Для начального опробывания методов может использоваться, например, такая неприятная функция как:
f( x1, x2 ) = sin( pi / 2 * x1 ^ 2 ) * sin( pi / 2 * x2 ^ 2 )
- которая на интервалах x1=[0...2] и x2=[0...2] имеет 4 максимума.


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python анализ данных
Непрочитанное сообщениеДобавлено: 12 ноя 2017, 15:52 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10248
Откуда: Харьков
Olej писал(а):
Olej писал(а):
Но меня интересовала линейная регрессия таблично заданной функции 2-х переменных.

Следующая интересующая меня реализация - оптимизация (нахождение точки максимума или минимума) функции общего вида (нелинейная) нескольких переменных.
Вида: Y = F( X1, X2, X3, ... Xn)

Запускаю online справочную систему Python:
Код:
[olej@dell ~]$ pydoc -p 40000 &
[1] 27763
[olej@dell ~]$ pydoc server ready at http://localhost:40000/

Теперь относительно того же свеже установленного пакета scikit-learn, по адресу http://localhost:40000/scipy.optimize.html (оптимизация) находим такие интересные подробности:
Код:
fmin(func, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter=None, maxfun=None, full_output=0, disp=1, retall=0, callback=None)
Minimize a function using the downhill simplex algorithm.
 
This algorithm only uses function values, not derivatives or second
derivatives.
 
Parameters
----------
func : callable func(x,*args)
    The objective function to be minimized.
x0 : ndarray
    Initial guess.
args : tuple, optional
    Extra arguments passed to func, i.e. ``f(x,*args)``.
callback : callable, optional
    Called after each iteration, as callback(xk), where xk is the
    current parameter vector.
xtol : float, optional
    Relative error in xopt acceptable for convergence.
ftol : number, optional
    Relative error in func(xopt) acceptable for convergence.
maxiter : int, optional
    Maximum number of iterations to perform.
maxfun : number, optional
    Maximum number of function evaluations to make.
full_output : bool, optional
    Set to True if fopt and warnflag outputs are desired.
disp : bool, optional
    Set to True to print convergence messages.
retall : bool, optional
    Set to True to return list of solutions at each iteration.
 
Returns
-------
xopt : ndarray
    Parameter that minimizes function.
fopt : float
    Value of function at minimum: ``fopt = func(xopt)``.
iter : int
    Number of iterations performed.
funcalls : int
    Number of function calls made.
warnflag : int
    1 : Maximum number of function evaluations made.
    2 : Maximum number of iterations reached.
allvecs : list
    Solution at each iteration.
 
See also
--------
minimize: Interface to minimization algorithms for multivariate
    functions. See the 'Nelder-Mead' `method` in particular.
 
Notes
-----
Uses a Nelder-Mead simplex algorithm to find the minimum of function of
one or more variables.
 
This algorithm has a long history of successful use in applications.
But it will usually be slower than an algorithm that uses first or
second derivative information. In practice it can have poor
performance in high-dimensional problems and is not robust to
minimizing complicated functions. Additionally, there currently is no
complete theory describing when the algorithm will successfully
converge to the minimum, or how fast it will if it does.
 
References
----------
.. [1] Nelder, J.A. and Mead, R. (1965), "A simplex method for function
       minimization", The Computer Journal, 7, pp. 308-313
 
.. [2] Wright, M.H. (1996), "Direct Search Methods: Once Scorned, Now
       Respectable", in Numerical Analysis 1995, Proceedings of the
       1995 Dundee Biennial Conference in Numerical Analysis, D.F.
       Griffiths and G.A. Watson (Eds.), Addison Wesley Longman,
       Harlow, UK, pp. 191-208.


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python анализ данных
Непрочитанное сообщениеДобавлено: 12 ноя 2017, 15:57 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10248
Откуда: Харьков
Olej писал(а):
Теперь относительно того же свеже установленного пакета scikit-learn, по адресу http://localhost:40000/scipy.optimize.html (оптимизация) находим такие интересные подробности:

Кроме того:
Код:
fmin_bfgs(f, x0, fprime=None, args=(), gtol=1e-05, norm=inf, epsilon=1.4901161193847656e-08, maxiter=None, full_output=0, disp=1, retall=0, callback=None)
Minimize a function using the BFGS algorithm.
...
References
----------
Wright, and Nocedal 'Numerical Optimization', 1999, pg. 198.

- это градиентный алгоритм;

Код:
fmin_cg(f, x0, fprime=None, args=(), gtol=1e-05, norm=inf, epsilon=1.4901161193847656e-08, maxiter=None, full_output=0, disp=1, retall=0, callback=None)
Minimize a function using a nonlinear conjugate gradient algorithm.
...
References
----------
.. [1] Wright & Nocedal, "Numerical Optimization", 1999, pp. 120-122.

- это градиентный алгоритм;

... и другие.


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python анализ данных
Непрочитанное сообщениеДобавлено: 12 ноя 2017, 15:58 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10248
Откуда: Харьков
Olej писал(а):
Кроме того:

Там же кой-чего из примеров ... что очень сильно помогает:
Код:
Examples
--------
Example 1: seek the minimum value of the expression
``a*u**2 + b*u*v + c*v**2 + d*u + e*v + f`` for given values
of the parameters and an initial guess ``(u, v) = (0, 0)``.
 
>>> args = (2, 3, 7, 8, 9, 10)  # parameter values
>>> def f(x, *args):
...     u, v = x
...     a, b, c, d, e, f = args
...     return a*u**2 + b*u*v + c*v**2 + d*u + e*v + f
>>> def gradf(x, *args):
...     u, v = x
...     a, b, c, d, e, f = args
...     gu = 2*a*u + b*v + d     # u-component of the gradient
...     gv = b*u + 2*c*v + e     # v-component of the gradient
...     return np.asarray((gu, gv))
>>> x0 = np.asarray((0, 0))  # Initial guess.
>>> from scipy import optimize
>>> res1 = optimize.fmin_cg(f, x0, fprime=gradf, args=args)
>>> print 'res1 = ', res1
Optimization terminated successfully.
         Current function value: 1.617021
         Iterations: 2
         Function evaluations: 5
         Gradient evaluations: 5
res1 =  [-1.80851064 -0.25531915]
 
Example 2: solve the same problem using the `minimize` function.
(This `myopts` dictionary shows all of the available options,
although in practice only non-default values would be needed.
The returned value will be a dictionary.)
 
>>> opts = {'maxiter' : None,    # default value.
...         'disp' : True,    # non-default value.
...         'gtol' : 1e-5,    # default value.
...         'norm' : np.inf,  # default value.
...         'eps' : 1.4901161193847656e-08}  # default value.
>>> res2 = optimize.minimize(f, x0, jac=gradf, args=args,
...                          method='CG', options=opts)
Optimization terminated successfully.
        Current function value: 1.617021
        Iterations: 2
        Function evaluations: 5
        Gradient evaluations: 5
>>> res2.x  # minimum found
array([-1.80851064 -0.25531915])


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
[ Time : 0.631s | 22 Queries | GZIP : On ]