#python #machine-learning #scikit-learn #linear-regression
Вопрос:
Мой набор данных поезда имеет следующие атрибуты:
стоимость, клики, показы, конверсии, группа объявлений
Я создал модель линейной регрессии для прогнозирования «дохода»
Теперь я хочу изменить свою модель так, чтобы я получал вывод из линейной регрессии только тогда, когда значение атрибута «преобразования» не равно 0, и если атрибут «преобразования» равен 0, то для получения вывода непосредственно как 0.
Что я сделал, так это то, что в наборе данных поезда я непосредственно сформировал следующую модель
input_cols = ['clicks', 'impressions', 'cost', 'conversions', 'adgroup 1', 'adgroup 2', 'adgroup 3', 'adgroup 4']
inputs, targets = train_csv[input_cols], train_csv['revenue']
model = LinearRegression().fit(inputs, targets)
После этого в наборе тестовых данных я сделал следующее, чтобы получить 0 всякий раз, когда «конверсии» равны 0
input_cols_test= ['clicks', 'impressions', 'cost', 'conversions', 'adgroup 1', 'adgroup 2', 'adgroup 3', 'adgroup 4']
inputs_test= test_csv[input_cols_test]
targets=[]
for n in test_csv['conversions']:
if n == 0:
targets = 0
else:
targets = (model.predict(inputs_test))
Но массив целей, который я получаю, имеет значения, полученные с помощью линейной регрессии. Я не получаю 0 в качестве вывода в местах, где «конверсии» равны 0. Как с этим бороться?
Комментарии:
1. Почему вы определяете
input_cols_test
, никогда не используя его? Кроме того, пожалуйста, измените кавычки во 2-м фрагменте кода (они не должны быть обратными кавычками).2.
targets = (model.predict(inputs_test))
просто предсказывает весьinputs_test
набор данных и перезаписывает все значения, которые былиtargets
раньше. Это не то, что вы хотите сделать — вы хотите предсказать там одну строку и добавлять (не переписывать)targets
в каждом выполнении цикла.