Кубическая интерполяция сплайна для данных данных, не соответствующих целевым даннымPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Кубическая интерполяция сплайна для данных данных, не соответствующих целевым данным

Сообщение Anonymous »

data :

Код: Выделить всё

data = pd.Series({
'2005-01': 14.80,
'2005-02': np.nan,
'2005-03': np.nan,
'2005-04': 14.83,
'2005-05': np.nan,
'2005-06': np.nan,
'2005-07': 15.14,
'2005-08': np.nan,
'2005-09': np.nan,
'2005-10': 15.03,
'2005-11': np.nan,
'2005-12': np.nan
})
Data:

Код: Выделить всё

target_data = pd.Series({
'2005-01': 14.85,
'2005-02': 14.76,
'2005-03': 14.79,
'2005-04': 14.71,
'2005-05': 14.83,
'2005-06': 14.95,
'2005-07': 15.16,
'2005-08': 15.16,
'2005-09': 15.11,
'2005-10': 15.05,
'2005-11': 15.02,
'2005-12': 15.01
})
< /code>
Я использую ниже функцию для интерполяции, но она не соответствует цели, помогите мне сопоставить ее с максимальной приемлемой ошибкой. >
def interpolate(row):
row = row.replace("nan", np.nan).astype(float)

first_non_null_index = row.first_valid_index()
if first_non_null_index is not None:
non_null_values = row.loc[first_non_null_index:].dropna().values

if len(non_null_values) > 1:
original_quarterly_values = non_null_values
quarterly_positions = np.arange(0, len(non_null_values) * 3, 3)
original_length = len(row.loc[first_non_null_index:])
interpolation_positions = np.arange(original_length)

#used natural for boundry condition, could that be an issue?
cs = CubicSpline(quarterly_positions, non_null_values, bc_type="natural")
interpolated_values = cs(interpolation_positions)
months)
interpolated_quarterly_avgs = []
for i in range(0, len(interpolated_values), 3):
end_idx = min(i + 3, len(interpolated_values))
quarterly_avg = np.mean(interpolated_values[i:end_idx])
interpolated_quarterly_avgs.append(quarterly_avg)

differences = original_quarterly_values - np.array(interpolated_quarterly_avgs)

#making adjustments could this be an issue?
adjusted_values = interpolated_values.copy()
for i in range(len(differences)):
start_idx = i * 3
end_idx = min(start_idx + 3, len(interpolated_values))
adjusted_values[start_idx:end_idx] += differences[i]

adjusted_values = np.round(adjusted_values, 3)

row.loc[first_non_null_index:] = adjusted_values
return row
else:
print('Only one non-null value found - cannot interpolate')
return row
return row
Пробое кубический сплайн для интерполяции, но не получение ожидаемого вывода, изменяю ли я корректировку или bc_type или даже использовать различные виды методов интерполяции?

Подробнее здесь: https://stackoverflow.com/questions/794 ... arget-data
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Кубическая сплайн-регрессия с sklearn?
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Почему кубическая анимация Bezier отличается в CSS против JavaScript?
    Anonymous » » в форуме Javascript
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • REGEX: найти полный тег a с целевым параметром в Python
    Гость » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Гость
  • Путаница и проблемы с исходным DTO и целевым DTO [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    74 Просмотры
    Последнее сообщение Anonymous
  • Как прикрепить файл изображения с целевым видением к потоку помощника OpenAI?
    Anonymous » » в форуме Javascript
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»