Python 使用空值学习SKKNN

Python 使用空值学习SKKNN,python,scikit-learn,knn,Python,Scikit Learn,Knn,我有一个按时间和个人划分的增长率数据集。我试图用KNN来预测基于其他个体历史增长的增长率 首先,我转换了事务级数据集,使每一行代表一个单独的数据集,列代表时间(以天为单位)。我想找到最有价值的人 以下是我的示例代码: from sklearn.neighbors import NearestNeighbors import pandas as pd neigh = NearestNeighbors(n_neighbors=5, metric = 'euclidean') df = pd.Dat

我有一个按时间和个人划分的增长率数据集。我试图用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值。

尝试在这些主题中哪个更活跃谢谢-数据科学。不过stackexchange是一个相当小的社区,sklearn在stackoverflow上很受欢迎,所以我很乐意在这里提问。一个合适的人可能更活跃。