Логистическая регрессия для некатегориального прогнозирования данных

#python #regression #logistic-regression

Вопрос:

Хорошо известно, что логистическая регрессия широко используется для задач классификации, в которых используются категориальные переменные. Я начал изучать, можно ли применить логистическую регрессию для числовых переменных или нет!

Например, допустим, у меня есть фрейм данных ( df ), который включает четыре переменные (>3000 наборов данных), поступающие от ветряных турбин следующим образом

      t                 wind speed  pressure   power_output  
2012-03-01 00:00:00        7.5      900.12       788.1564
2012-03-01 00:00:10        8.5      900.86       991.8323
2012-03-01 00:00:20        5.6      900.72       985.0856
2012-03-01 00:00:30        8.9      900.29       879.3877
2012-03-01 00:00:40        10.1     900.58       1118.800
 

Вот моя целевая переменная power_output . Основываясь на других переменных, я хотел бы предсказать power_output . Возможно ли это с помощью logistic regression ?

Стоит отметить, что связь между power_output и wind speed почти как S-образная симиара с сигмовидной функцией.

Я написал коды, но это не принимает continious ярлык. И получаю эту ошибку ValueError: Unknown label type: 'continuous'

 df=pd.read_csv('data.csv').dropna()
df.head()

X=pd.iloc[:,[0,2]].values
y=pd.iloc[:,3].values      # power_output

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

from sklearn.preprocessing import StandardScaler
sc= StandardScaler()
X_train=sc.fit_transform(X_train)
X_test=sc.fit_transform(X_test)

from sklearn.linear_model import LogisticRegression
classifier=LogisticRegression(random_state=0)
classifier.fit(X_train,y_train)

y_pred=classifier.predict(X_test)
 

Комментарии:

1. Нет, нет, нет. Линейная регрессия, или «непрерывная» регрессия.

2. Данные нелинейны, поэтому нельзя использовать линейную регрессию.

3. Вы можете использовать нелинейные термины в «линейной» регрессии, чтобы учесть нелинейность данного процесса генерации данных.

Ответ №1:

Я думаю, что логистическая регрессия здесь не является правильным подходом. Проблема в том, что логистическая регрессия определяет вероятность метки. power_output Будучи числом, у вас есть бесконечное количество ярлыков.

На мой взгляд , лучшим подходом является использование a Regressor , которое аппроксимирует функцию между непрерывными значениями X и Y.

Я бы попробовал AdaBoostRegressor от sklearn, который статистически определяет наилучшую функцию для аппроксимации. Вам не нужно слишком сильно меняться, так как это из той же библиотеки (sklearn).

В качестве альтернативы вы можете использовать линейную регрессию и преобразовать свои данные (например, с помощью полиноминальных функций), чтобы приблизить некоторую функцию, размерность которой выше линейной.

Комментарии:

1. ДА. Я знаю. но просто посмотрите, есть ли какой-либо способ решить эту проблему с помощью логистики или нет. Не могли бы вы привести какой-нибудь пример «Регрессора» ?

2. Да, я отредактировал anwser. Я бы попробовал AdaBoostRegressor, так как он очень прост и дает вам хорошие результаты.

3. Я бы занялся этим вопросом.

Ответ №2:

Известна физическая связь между плотностью, скоростью ветра и выходной мощностью ветряных турбин: P = p * v^3 * C с p плотностью (которая напрямую коррелирует с давлением), v скоростью ветра (вплоть до скорости отключения) и C постоянным коэффициентом, зависящим от ветротурбины.

Так что на самом деле вам нужно только соответствовать коэффициенту C, который можно выполнить с помощью кривой scipy.

Ответ №3:

Логистическая регрессия в 99% случаев используется для прогнозирования двоичного результата. Мы можем привести в качестве наиболее известного примера пример Титаника: основываясь на данных каждого пассажира, вы можете попытаться определить, выжили они или нет (т. е. жили или умерли (так что двоичный результат)). На мой взгляд, если вы пытаетесь предсказать значение на основе других параметров, вам следует попробовать использовать другой алгоритм, но вы не можете использовать ни линейный алгоритм, ни логистическую регрессию. Возможно, вы могли бы попробовать использовать случайный регрессор леса модуля scikit-learn, но я не слишком уверен, как это будет работать.

Редактировать: когда я говорю двоичный результат, это также может считаться классификацией между двумя классами