Я ломал голову над этим уже 2 дня и, похоже, не могу найти какую-либо модель предсказания, основанную на обратной функции.То, что я пытаюсь сделать, - это основать модель прогнозирования на данных из моего панда Dataframe.Стандартные, которые я пробовал (например, линейная регрессия), дали очень плохие результаты, поэтому я получил данные и увидел, что это потому, что данные имеют (1 / x) отношение, а не линейную корреляцию.
#Create a prediction model:
result = smf.ols(data = temp2, formula = "n_guns_involved ~ injured_killed").fit()
result.summary()
Консольный вывод для «результата»
#Bad results, let's see what reciprocal function is like
result2 = smf.ols(data = temp2, formula = "n_guns_involved ~ I(1/injured_killed)").fit()
result2.summary()
Консольный вывод для «результата2»
ik_temp = pd.DataFrame({"injured_killed": np.arange(0,20.0,0.01)})
ik_temp['Linear_prediction'] = result.predict(ik_temp)
ik_temp['Reciprocal_prediction'] = result2.predict(ik_temp)
plt.scatter(temp2['n_guns_involved'], temp2['injured_killed'])
plt.plot(ik_temp['injured_killed'], ik_temp['Linear_prediction'], color = 'red')
plt.plot(ik_temp['injured_killed'], ik_temp['Reciprocal_prediction'], color = 'green')
введите описание изображения здесь
Для справки, фиолетовая линия выше - это Взаимная функция (1 / x), которую я только что нанес на тот же график - как вы можете видеть, он должен бытьприспособлен под данные, и я, к сожалению, не смог этого сделать.Красная линия - это «Линейная» линия, а «Зеленая» - моя попытка обратной функции (через result2 в приведенном выше фрагменте).
Также обратите внимание, что я пытался использовать X ** (- 1), но, конечно, это не удалось.
Любая помощь будет принята с благодарностью - Спасибо!