非分类数据预测的逻辑回归

时间:2021-07-21 15:11:01

标签: 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_outputwind speed 之间的关系类似于 S 型函数,类似于 sigmoid 函数。

我已经编写了代码,但它没有带 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)

3 个答案:

答案 0 :(得分:1)

我认为逻辑回归在这里不是正确的方法。问题在于逻辑回归决定了标签的概率。 power_output 是一个数字,你有无数的标签。

我认为更好的方法是使用 Regressor,它近似于连续 X 和 Y 值之间的函数。

我会尝试使用 AdaBoostRegressor from sklearn,它在统计上确定了要近似的最佳函数。您不必更改太多,因为它来自同一个库 (sklearn)。

或者,您可以使用 LinearRegression 并转换您的数据(例如使用 PolynominalFeatures),以逼近某个维度高于线性的函数。

答案 1 :(得分:0)

风力涡轮机的密度、风速和功率输出之间的物理关系是已知的:P = p * v^3 * Cp 密度(与压力直接相关),v 风速(高达 cut-out speed),以及 C 一个与风力涡轮机相关的常数因子。

实际上,您只需要拟合可以使用 scipy's curve fit 完成的因子 C。

答案 2 :(得分:0)

逻辑回归有 99% 的时间用于预测二元结果。 我们可以引用泰坦尼克号的例子作为最著名的例子:根据每位乘客的数据,您可以尝试确定他们是否幸存下来(即生还是死(因此二元结果))。 对我来说,如果您尝试根据其他参数预测一个值,您应该尝试使用其他算法,但不能使用线性算法或逻辑回归。 也许您可以尝试使用 scikit-learn 模块的随机森林回归器,但我不太确定它会如何工作。

编辑:当我说二元结果时,它也可以算作两个类别之间的分类