Как применять модель линейной регрессии только при выполнении определенного условия входного столбца?

#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 в каждом выполнении цикла.