Почему poly1d не производит прямую линию без последовательных значений? - PullRequest
0 голосов
/ 18 марта 2019

У меня есть следующий код, который выделил poly1d не делает то, что я думал, что он сделал:

data_set = pd.DataFrame()
data_set['time_stamp'] = ['2018-10-03 21:59:00', '2018-10-04 04:11:00',
               '2018-10-05 02:15:00', '2018-10-05 22:16:00',
               '2018-10-07 12:23:00', '2018-10-08 22:07:00',
               '2018-10-11 06:21:00', '2018-10-11 17:32:00',
               '2018-10-11 23:45:00', '2018-10-13 09:37:00',
               '2018-10-15 02:49:00', '2018-10-15 06:02:00',
               '2018-10-15 19:01:00', '2018-10-16 05:49:00',
               '2018-10-18 18:00:00', '2018-10-21 01:32:00',
               '2018-10-23 10:54:00', '2018-10-28 17:57:00',
               '2018-10-31 14:54:00']
data_set['value'] = [0.033567, 0.034284, 0.03351599, 0.034715, 0.033909,0.03463999, 0.031394,0.032193,0.030485,0.031977,0.030857, 0.03339099, 0.031096,0.032014,0.030989,0.03185099, 0.03107, 0.03178,0.030868 ]
data_set.set_index( pd.DatetimeIndex( data_set.time_stamp ), inplace=True)

fig = plt.figure(figsize=(16, 25))
ax = plt.subplot(211)
data_set['value'].plot()

y = [ 0.03463999, 0.032014, 0.031075]
x = [2, 7, 18]

poly = np.polyfit( x, y, 1 )
range_interested_in = range( min(x), max(x) )
line_x = np.poly1d( poly )( range_interested_in )

pdline = pd.DataFrame({
    'time_stamp': data_set.time_stamp[ min(x) : max(x) ].values,
    'value': line_x
})

pdline.set_index( pd.DatetimeIndex( pdline.time_stamp ), inplace=True)
pdline['value'].plot()

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

Моя проблема заключается в следующем: у меня есть набор данных, и я случайно выбираю две точки.Я использую poly1d, чтобы нарисовать прямую линию через эти две точки и посмотреть, сколько других точек находится в пределах процентного порога линии.Для этого фрагмента кода я жестко закодировал набор данных, временные метки и точки, которые были найдены вдоль такой линии.

Затем я хочу еще раз выполнить poly1d, чтобы сделать линию наилучшего соответствия более точной в найденных точках.чтобы быть в пределах порога, но индексы не являются последовательными, и это, кажется, сломать его

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