Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python: научные вычисления
Войти
Регистрация
Восстановить пароль
 
HomBro
1 / 1 / 1
Регистрация: 14.12.2015
Сообщений: 81
#1

Экстраполирование данных - Python

17.06.2018, 10:52. Просмотров 250. Ответов 16
Метки нет (Все метки)

Есть вот такой график, значения известны только в закрашенных точках, необходимо найти значения в остальных точках, посоветовали экстраполировать, но никак не могу разобраться, как это сделать в python, может кто объяснить на примере этого графика, как реализовать подобное?
0
Миниатюры
Экстраполирование данных  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2018, 10:52
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Экстраполирование данных (Python):

Интегрирование и экстраполирование функций
Нужно построить точки и провести линию,согласно выводимому...

Интегрирование и экстраполирование функций
Помогите пожалуйста расставить точки на рисунке в программе,соответственно...

Создайте меню программы, состоящее из трех пунктов: удаление данных, добавление данных, просмотр данных
Создайте меню программы, состоящее из трех пунктов: удаление данных, добавление...

Выбор данных из полей со списком, занесение этих данных в список и добавление данных в таблицу
Подскажите пожалуйста, как что то подобное сделать в Access или посоветуйте...

Ввод структурированных данных в файл и вывод данных из этого файла на экран (сделать хранилище данных в файле)
Здравствуйте) помогите написать программу, осуществляющую ввод...

Скопировать структуру базы данных в новую базу данных без самих данных
Здравствуйте! Подскажите пожалуйста, как более удобно скопировать всю базу...

16
HomBro
1 / 1 / 1
Регистрация: 14.12.2015
Сообщений: 81
17.06.2018, 20:12  [ТС] #2
Неужели никто не может ничего посоветовать?
0
ТабуретY
746 / 497 / 302
Регистрация: 05.12.2013
Сообщений: 1,439
17.06.2018, 20:17 #3
Сходи к математикам http://www.cyberforum.ru/mathematics/, пусть объяснят как тут экстраполировать
0
IRIP
90 / 42 / 8
Регистрация: 18.04.2015
Сообщений: 509
Записей в блоге: 4
17.06.2018, 21:24 #4
Цитата Сообщение от HomBro Посмотреть сообщение
значения известны только в закрашенных точках
я правильно понимаю, что самая верхняя точка - 66, потом 55, потом 44 и т.д.
а значения остальных точек - любой по выборке
будет равняться по осям x y

за сим, поскольку Экстраполяция — это логико-методологическая процедура распространения (переноса) выводов, сделанных относительно какой-либо части объектов или явлений на всю совокупность (множество) данных объектов или явлений
делаем вывод, что значение остальных точек будет равно относительному значению известных точек (типа так)

Добавлено через 2 минуты
https://stackoverflow.com/questions/...-to-the-future

https://www.linux.org.ru/forum/science/12945809

http://askdev.info/questions/278725/...h-numpy-python

https://habr.com/post/271563/
0
passant
36 / 36 / 6
Регистрация: 09.01.2018
Сообщений: 121
17.06.2018, 22:28 #5
Покажите реальные значения, которые функция принимает в закрашенных точках. Тогда будет о чем говорить. Пока складывается впечатление, что вы неправильно даже условие задачи сформулировали.
0
HomBro
1 / 1 / 1
Регистрация: 14.12.2015
Сообщений: 81
18.06.2018, 14:14  [ТС] #6
passant, вот вот по таким данным надо строить изолинии, но в координатной сетке данные известны только на главной диагонали, а остальные сказали попробовать экстраполировать
0
Вложения
Тип файла: txt 12.txt (502 байт, 9 просмотров)
passant
36 / 36 / 6
Регистрация: 09.01.2018
Сообщений: 121
18.06.2018, 22:47 #7
1. То, что вы показали и то, что у вас на рисунке в первом сообщении - кардинально различные даже по своей структуре данные.
2. Я конечно могу попытаться понять, что значит ОДНА СТРОЧКА данных из вашего примера, но почему то - не тянет.
3. Если вам действительно нужна помощь, то предоставьте ДАННЫЕ, а не заставляйте нас гадать, каждый раз подбрасывая какие-то ошметки информации. Ну например, как можно понять, что такое данные "на главное диагонали" из предоставленных вами данных? Или, если предположить ( а почему я должен что-то предполагать, почему вы сами не можете мне это сказать), что X,Y,Z - это пространственные координаты, то где ЗНАЧЕНИЕ целевой переменной в конкретной точке?
0
IRIP
90 / 42 / 8
Регистрация: 18.04.2015
Сообщений: 509
Записей в блоге: 4
19.06.2018, 09:45 #8
1C
1
2
3
YYYY MM DD HH MM SS     NAL X   NAL Y   NAL Z   LYR X   LYR Y   LYR Z   HOR X   HOR Y   HOR Z   HOP X   HOP Y   HOP Z   BJN X   BJN Y   BJN Z   TRO X   TRO Y   TRO Z 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
2015 01 01 00 00 00     7154.0   781.9 54297.5  7388.6  1046.0 54320.9  7821.3  1002.6 53990.2 99999.9 99999.9 99999.9  8643.6  1526.4 53610.8 10815.3  1160.8 52347.8
Добавлено через 35 секунд
похоже на какой-то "тест ДНК" и яша, и гоша, упорно навязывают мне это...
0
HomBro
1 / 1 / 1
Регистрация: 14.12.2015
Сообщений: 81
19.06.2018, 11:04  [ТС] #9
passant, вот весь файл, мне через каждую минуту, то есть по каждой 6 строчке нужно построить изолинии, NEL, LYR, HOR - это сокращения обсерваторий, мне нужно выбрать несколько обсерваторий и по их X,Y построить координатную сетку, например в момент времени "2015-01-01 00:00:00 " сетку я построил, но Z известны только в точках: X[1], Y[1]; X[2], Y[2], X[3], Y[3]... Чтобы найти значения в остальных точках сказали попробовать экстраполировать, поэтому я набросал примерно как всё выглядит и как можно было бы подобное реализовать
0
Вложения
Тип файла: rar image2015010100.rar (1.42 Мб, 1 просмотров)
IRIP
90 / 42 / 8
Регистрация: 18.04.2015
Сообщений: 509
Записей в блоге: 4
19.06.2018, 13:55 #10
поиск подсказывает, что нужно использовать numpy

Python
1
2
3
4
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
from scipy.interpolate import UnivariateSpline
экстраполировать можно линейно, например

Python
1
2
3
4
5
6
 import numpy as np
from scipy import interpolate
 
x = [1, 2, 3, 4, 5] # NAL X / LYR X / HOR X / HOP X / BJN X / TRO X ну и т.п. 
y = [5, 10, 15, 20, 25]
z = interpolate.interp1d(x, y, fill_value = "extrapolate")
я тоже только учу python =)
0
HomBro
1 / 1 / 1
Регистрация: 14.12.2015
Сообщений: 81
19.06.2018, 16:09  [ТС] #11
IRIP, а где здесь уже известные значения?
0
IRIP
90 / 42 / 8
Регистрация: 18.04.2015
Сообщений: 509
Записей в блоге: 4
19.06.2018, 17:20 #12
Цитата Сообщение от HomBro Посмотреть сообщение
а где здесь уже известные значения?
известные значения в вашем файле прикрепленном, который 1459 кб
я его проанализировал немного... похожее видел при анализе данных по бухучету

а мой пример - это просто - пример
направление, куда копать, а точнее в сторону numpy, scipy, matplotlib

где-то там есть решение, уверен на 99% =)
0
HomBro
1 / 1 / 1
Регистрация: 14.12.2015
Сообщений: 81
19.06.2018, 17:42  [ТС] #13
IRIP, я пробую сейчас через griddata, вот что у меня пока получилось, не смотрите что так криво:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import matplotlib.pyplot as plt
plt.style.use('seaborn-white')
import numpy as np
import matplotlib.mlab as mlab
import scipy
from scipy.interpolate import griddata
 
x1 = [7154.0,7154.0,7154.0,7154.0,7154.0]
x2 = [7388.6,7388.6,7388.6,7388.6,7388.6]
x3 = [7821.3,7821.3,7821.3,7821.3,7821.3]
x4 = [8643.6,8643.6,8643.6,8643.6,8643.6]
x5 = [99999.9,99999.9,99999.9,99999.9,99999.9]
 
y1 = [781.9,781.9,781.9,781.9,781.9]
y2 = [1002.6,1002.6,1002.6,1002.6,1002.6]
y3 = [1046.0,1046.0,1046.0,1046.0,1046.0]
y4 = [1526.4,1526.4,1526.4,1526.4,1526.4]
y5 = [99999.9,99999.9,99999.9,99999.9,99999.9]
 
x = [[x1],[x2],[x3],[x4],[x5]]
y = [[y1],[y2],[y3],[y4],[y5]]
 
points = [[7154.0, 781.9],[7388.6, 1046.0],[7821.3,1002.6],[99999.9,99999.9],[8643.6,1526.4]]
values = [54297.5, 54320.9, 53990.2, 99999.9, 53610.8]
 
new_value = griddata(points, values, (x, y), method='nearest')
Вроде данные пытался собрать так же как в примере, но ничего не работает
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import numpy as np
from scipy.interpolate import griddata
import matplotlib.pyplot as plt
 
def func(x, y):
    return x*(1-x)*np.cos(4*np.pi*x) * np.sin(4*np.pi*y**2)**2
 
grid_x, grid_y = np.mgrid[0:1:100j, 0:1:200j]
 
points = np.random.rand(1000, 2)
values = func(points[:,0], points[:,1])
 
grid_z0 = griddata(points, values, (grid_x, grid_y), method='nearest')
grid_z1 = griddata(points, values, (grid_x, grid_y), method='linear')
grid_z2 = griddata(points, values, (grid_x, grid_y), method='cubic')
 
plt.subplot(221)
plt.imshow(func(grid_x, grid_y).T, extent=(0,1,0,1), origin='lower')
plt.plot(points[:,0], points[:,1], 'k.', ms=1)
plt.title('Original')
plt.subplot(222)
plt.imshow(grid_z0.T, extent=(0,1,0,1), origin='lower')
plt.title('Nearest')
plt.subplot(223)
plt.imshow(grid_z1.T, extent=(0,1,0,1), origin='lower')
plt.title('Linear')
plt.subplot(224)
plt.imshow(grid_z2.T, extent=(0,1,0,1), origin='lower')
plt.title('Cubic')
plt.gcf().set_size_inches(6, 6)
plt.show()
Третий день уже сижу с этим, голова забита, сам понять в чем проблема уже не могу, если объясните, то буду очень благодарен
0
IRIP
90 / 42 / 8
Регистрация: 18.04.2015
Сообщений: 509
Записей в блоге: 4
19.06.2018, 18:46 #14

Не по теме:

здесь я уже не потяну =) знаний маловато... Я так-то, все почти понимаю, но на словах, объяснить, а там более с примерами кода, пока не могу.

уверен, тут помогут!



Добавлено через 44 секунды
попробовать пока без предсказания в будущем, вывести, А далее, можно усреднить =)
и предсказывать...
0
dondublon
2114 / 1033 / 209
Регистрация: 17.03.2012
Сообщений: 6,320
Записей в блоге: 5
26.06.2018, 16:25 #15
Цитата Сообщение от HomBro Посмотреть сообщение
Есть вот такой график, значения известны только в закрашенных точках, необходимо найти значения в остальных точках, посоветовали экстраполировать,
Значения есть только на одной линии, а вам надо экстраполировтаь на 2d-кусок плоскости. Вы слишком многого хотите.

Цитата Сообщение от IRIP Посмотреть сообщение
экстраполировать можно линейно, например
from scipy import interpolate
Да, только это не экстраполяция, а интерполяция, на что намекает даже название функции.
0
passant
36 / 36 / 6
Регистрация: 09.01.2018
Сообщений: 121
26.06.2018, 18:56 #16
начения есть только на одной линии, а вам надо экстраполировтаь на 2d-кусок плоскости. Вы слишком многого хотите.
На самом деле, как выяснилось, не так. Каждая точка имеет координаты по Х и Y (вполне разбросанные по плоскости) и значения Z. Так что задача вполне классическая - построения изолиний. Только вот ТС, после того, как ему это рассказали, исчез из "поля зрения радара" без прощальных слов и благодарностей
1
dondublon
2114 / 1033 / 209
Регистрация: 17.03.2012
Сообщений: 6,320
Записей в блоге: 5
26.06.2018, 19:22 #17
Цитата Сообщение от passant Посмотреть сообщение
Каждая точка имеет координаты по Х и Y (вполне разбросанные по плоскости) и значения Z. Так что задача вполне классическая - построения изолиний.
А, ну это уже ближе к реальности.
Правда, и тут две разные задачи. Интерполяция 2d и построение изолиний. Для второй уже есть готовые либы.
Для первой тоже есть, но "возможны варианты".
0
26.06.2018, 19:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2018, 19:22
Привет! Вот еще темы с решениями:

Редактирование пользователем данных из базы данных и сохранение уже отредактированных данных
Здравствуйте форумчане!Вынужден обратиться к вам,так как сам ничего не могу...

Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s.
всем доброго времени суток! есть у меня класс bd, массив элементов этого класса...

Подгонка данных. Проверить соответствие рассчитанных данных (5 точек) теоретической кривой
Всем привет! Есть задача - проверить соответствие рассчитанных данных(5 точек)...

Php + mysql = отобразить перечень таблиц базы данных, схему данных
Всем привет, нужна ваша помощь, как реализовать данные задания? 1. Создать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru