python 空值填充 knn_带空值的Sklearn KNN

我有一个按时间和个人分列的增长率数据集。我试图用KNN来预测其他个人的历史增长率。在

首先,我转换了事务级别的数据集,使每一行代表一个单独的数据集,列是时间(以天为单位)。我想找到价值观最接近的人

我的代码示例:from sklearn.neighbors import NearestNeighbors

import pandas as pd

neigh = NearestNeighbors(n_neighbors=5, metric = 'euclidean')

df = pd.DataFrame([['A',1,1,.2],['A',1,2,.25],['A',1,4,.3],['B',0,1,.5],['B',0,3,.52],['B',0,2,.51]

,['C',1,1,1.1],['C',1,2,1.3],['C',1,4,1.5]],columns = ['Cust_ID','Gender_Male','Day_No','Value'])

df_unstacked = df.set_index(['Cust_ID','Gender_Male','Day_No']).unstack()

print df_unstacked

Day_No 1 2 3 4

Cust_ID Gender_Male

A 1 0.2 0.25 NaN 0.3

B 0 0.5 0.51 0.52 NaN

C 1 1.1 1.30 NaN 1.5

neigh.fit(df_unstacked) #Throws error:

ValueError: Input contains NaN, infinity or a value too large for

dtype('float64').

我应该如何构造此数据以避免因缺少值而引发错误?我不想插补值-我只想计算存在值的距离。如果我输入样本行,我希望能够找到附近邻居每天的平均值

我知道这是可能的,因为我以前用过推荐系统和稀疏数据做过,但是我不熟悉sklearn KNN语法以及如何在计算距离/相似性时让它跳过NaN值。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值