Работа с Python 3 в блокноте Jupyter
. Я пытаюсь создать модель регрессии (уравнение?), чтобы предсказать переменную Eng as % of Followers
. Мне дали бы Media Type
, Hour Created
и Day of Week
. Все они должны рассматриваться как категориальные переменные.
Вот некоторые из прошлых данных, которые у меня есть.
Media Type Eng as % of Followers Hour Created Day of Week
0 Video 0.0136 23 Tuesday
1 Video 0.0163 22 Wednesday
2 Video 0.0163 22 Tuesday
3 Video 0.0196 22 Friday
4 Video 0.0179 20 Thursday
5 Photo 0.0087 14 Wednesday
Я создал dummy variables
с помощью pd.get_dummies
, но я не уверен, что сделал это правильно - проблема именно в переменной Hour Created
. Это числа, но я хочу, чтобы их рассматривали как категории. Например, 22-й час может повысить производительность, но это не должно говорить о 21-м и 23-м часах.
Мне также любопытно, могу ли я использовать свой модельный фактор во взаимодействии между Day of Week
и Hour Created
(возможно, 22-й час — это повышение в большинстве дней, но 22-пятница вызывает падение), как я видел с патси... но это может быть я получаю жадный.
Вот как я создал свои фиктивные переменные, что ставит меня перед проблемой использования Hour Created
в качестве количественной переменной, а не качественной. Кроме того, кадр данных Vars, который я буду использовать в будущем, не содержит того, что я пытаюсь предсказать. Может быть, это правильно?
Vars = Training[['Hour Created','Day of Week','Media Type']]
Result = Training['Eng as % of Followers']
Vars = pd.get_dummies(data=Vars, drop_first=True)
Если бы кто-то мог помочь с проблемой Hour Created, это было бы отличным началом... А потом, не знаю, что делать дальше. Я видел, как люди использовали функцию ols в этой ситуации. Или linear_model из sklearn. Я борюсь с тем, как интерпретировать результаты любого из них, и особенно борюсь с тем, как подключить фрейм данных этих трех независимых переменных к этой модели. Если кто-то может сделать предложение, я попытаюсь запустить его.
Редактировать: включая несколько способов, которыми я пытался создать эту модель. Вот первое, которое, как я предполагаю, неправильно использует мои данные Hour. И поскольку в кадре данных, который я передаю, даже нет Eng как% от подписчиков в качестве заголовка столбца, я даже не уверен, что он пытается предсказать...
Vars_train, Vars_test, Result_train, Result_test = train_test_split(Vars, Result, test_size = .20, random_state = 40)
regr = linear_model.LinearRegression()
regr.fit(Vars_train, Result_train)
predicted = regr.predict(Vars_test)
Когда я пытаюсь использовать метод ols следующим образом, я получаю недопустимую синтаксическую ошибку. Пробовал разные варианты - безрезультатно.
fit1 = ols('Eng as % of Followers ~ C(Day of Week) + C(Hour Created) + C(Media Type)', data=Training).fit()