Как кодировать кусочно-линейную регрессию - PullRequest
0 голосов
/ 09 апреля 2019

Я очень новичок в кодировании, и мне нужно построить график, который имеет кусочно-линейную регрессию в Python (для курсовой работы). В основном у меня есть пять точек данных, и я хочу, чтобы отдельные линии соединяли их. Если кто-то может помочь, это будет высоко ценится.

(В дополнение к этому я хотел бы знать, как кодировать для достижения вероятности промежуточных значений, таких как 24,33 и т. Д.) Вот код, который у меня есть:

ages = [20, 30, 35, 40, 45]

probabilities = [1 / 1500, 1 / 800, 1 / 270, 1 / 100, 1 / 50]

import matplotlib.pyplot as plt

%matplotlib inline

plt.title('Maternal age affecting likelihood of having a Down Syndrome child')

plt.xlabel('$Age$')

plt.ylabel('$Probability$')

plt.scatter(ages, probabilities)

1 Ответ

0 голосов
/ 09 апреля 2019

Вы получаете очки, потому что вы выбрали plt.scatter(), который составляет точечный график. Если вам нужен линейный сюжет, просто переключитесь на plt.plot(), например:

import matplotlib.pyplot as plt

ages = [20, 30, 35, 40, 45]
probabilities = [1 / 1500, 1 / 800, 1 / 270, 1 / 100, 1 / 50]

plt.title('Maternal age affecting likelihood of having a Down Syndrome child')
plt.xlabel('$Age$')
plt.ylabel('$Probability$')
plt.plot(ages, probabilities)
plt.show()

Уступая:

line plot

Интерполировать на основе этих данных довольно просто с numpy. Вы просто запускаете:

import numpy as np

ages = [20, 30, 35, 40, 45]
probabilities = [1 / 1500, 1 / 800, 1 / 270, 1 / 100, 1 / 50]

prob_32 = np.interp(32, ages, probabilities) # change 32 to whatever age you want
print(prob_32)

Но это напечатает вероятность как .00223 вместо 1/450, но вы можете просто сказать 1/prob_32, чтобы получить число 450!

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