Sklearn 或 Pandas,用简单的线性回归估算缺失值
Posted
技术标签:
【中文标题】Sklearn 或 Pandas,用简单的线性回归估算缺失值【英文标题】:Sklearn or Pandas, impute missing values with simple linear regression 【发布时间】:2019-03-26 19:05:04 【问题描述】:我有数据、时间序列数据,我想估算缺失的数据。我不能使用列的平均值,因为我认为它不适合时间序列数据。 所以我想要简单的线性回归来估算它
Day, Price
1 , NaN
2, NaN
3, 1800
4, 1900
5, NaN
6, NaN
7, 2000
8, 2200
如何做到这一点?
我更喜欢使用 Pandas 来做这件事, 但如果没有其他方法,我可以使用 sklearn 来做到这一点:)
【问题讨论】:
查看imputing of missing values in scikit-learn @VivekKumar sklearn 的插补仅支持常数值、均值、中值或最频繁。所以,正是 OP 不想要什么。 【参考方案1】:您可以使用interpolate
:
df['Price'].interpolate(method='linear', inplace=True)
结果:
Price Date
0 NaN 1
1 NaN 2
2 1800.000000 3
3 1900.000000 4
4 1933.333333 5
5 1966.666667 6
6 2000.000000 7
7 2200.000000 8
如您所见,这只会向前填充缺失值。如果还想填充前两个值,请使用参数limit_direction="both"
:
df['Price'].interpolate(method='linear', inplace=True, limit_direction="both")
有不同的插值方法,例如二次或样条,有关更多信息,请参阅文档:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.interpolate.html
【讨论】:
以上是关于Sklearn 或 Pandas,用简单的线性回归估算缺失值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Matplotlib、pandas 和 sklearn 创建线性回归图?