我使用以下公共数据集来练习线性回归:
https://www.kaggle.com/theforcecoder/wind-power-forecasting
我试图使用numpy多项式进行最小二乘回归,但我遇到了问题,因为列具有nan值
将dropna应用于我从中提取列的数据帧没有效果。我尝试使用in_place=True和定义一个新的数据帧,但都不起作用:
LSFitdDf = BearingTempsCorr[['WindSpeed', 'BearingShaftTemperature']]
LSFitdDf = LSFitdDf[['WindSpeed', 'BearingShaftTemperature']]
WindSpeed = BearingTempsCorr['WindSpeed']
BearingShaftTemperature = BearingTempsCorr['BearingShaftTemperature']
print(len(WindSpeed))
print(len(BearingShaftTemperature))
和
LSFitdDf = BearingTempsCorr[['WindSpeed', 'BearingShaftTemperature']].dropna()
LSFitdDf = LSFitdDf[['WindSpeed', 'BearingShaftTemperature']]
WindSpeed = BearingTempsCorr['WindSpeed']
BearingShaftTemperature = BearingTempsCorr['BearingShaftTemperature']
print(len(WindSpeed))
print(len(BearingShaftTemperature))
两者都产生相同的输出(两列的长度=323(
然而,将dropna应用于列本身确实会删除行:
WindSpeed = BearingTempsCorr['WindSpeed'].dropna()
BearingShaftTemperature = BearingTempsCorr['BearingShaftTemperature'].dropna()
导致长度=(316312(
然而,这引入了一个新问题:由于x和y具有不同的长度,因此不能应用回归
这是怎么回事?
您的代码中有一个错误:
WindSpeed = BearingTempsCorr['WindSpeed']
BearingShaftTemperature = BearingTempsCorr['BearingShaftTemperature']
您使用BearingTempsCorr
,但应该使用LSFitdDf
(保存dropna值的位置(。
WindSpeed = LSFitdDf['WindSpeed']
BearingShaftTemperature = LSFitdDf['BearingShaftTemperature']
附言:您还有一个冗余行,它只是将LSFitdDf
复制到同一个变量中。
LSFitdDf = LSFitdDf[['WindSpeed', 'BearingShaftTemperature']]
p.p.S.获取整个数据集但在所需列中删除NA值的行的最清晰方法是
BearingTempsCorr.dropna(subset=['WindSpeed', 'BearingShaftTemperature'])