如何解决非分类数据预测的逻辑回归
众所周知,逻辑回归广泛用于使用分类变量的分类问题。我开始探索是否可以对数值变量应用逻辑回归!
例如,假设我有一个数据框 (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 型函数,类似于 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)
解决方法
我认为逻辑回归在这里不是正确的方法。问题在于逻辑回归决定了标签的概率。 power_output
是一个数字,你有无数的标签。
我认为更好的方法是使用 Regressor
,它近似于连续 X 和 Y 值之间的函数。
我会尝试使用 AdaBoostRegressor from sklearn,它在统计上确定了要近似的最佳函数。您不必更改太多,因为它来自同一个库 (sklearn)。
或者,您可以使用 LinearRegression 并转换您的数据(例如使用 PolynominalFeatures),以逼近某个维度高于线性的函数。
,风力涡轮机的密度、风速和功率输出之间的物理关系是已知的:P = p * v^3 * C
与 p
密度(与压力直接相关),v
风速(高达 cut-out speed),以及 C
一个与风力涡轮机相关的常数因子。
实际上,您只需要拟合可以使用 scipy's curve fit 完成的因子 C。
,逻辑回归有 99% 的时间用于预测二元结果。 我们可以引用泰坦尼克号的例子作为最著名的例子:根据每位乘客的数据,您可以尝试确定他们是否幸存下来(即生还是死(因此二元结果))。 对我来说,如果您尝试根据其他参数预测一个值,您应该尝试使用其他算法,但不能使用线性算法或逻辑回归。 也许您可以尝试使用 scikit-learn 模块的随机森林回归器,但我不太确定它会如何工作。
编辑:当我说二元结果时,它也可以算作两个类别之间的分类
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。