【问题标题】:Pairwise Distance Dealing with NaNs处理 NaN 的成对距离
【发布时间】:2019-11-24 22:17:31
【问题描述】:

我有一个数据透视表,我想从中计算每天之间的成对距离矩阵。由于我的数据集包含 NaN 值,因此当我使用 sklearn 成对距离时,它会在我身上产生。

如果有办法克服这个问题,我喜欢吗?

数据透视表 X 是这样的:

 time   04:45:00    05:00:00   05:15:00
 date     
 01-01    61           NaN        44
 01-02    23            70         NaN

from sklearn.metrics.pairwise import pairwise_distances
pairwise_distances(X)

我遇到以下错误:

ValueError: Input conains NaN, infinity or a value too large for dtype('float64')

【问题讨论】:

    标签: python-3.x scikit-learn nan pairwise-distance


    【解决方案1】:

    简单的解决方法是用一些估算值填充那些NaN 值。可以是0mean、沿行向前/向后填充值等。

    试试这样的!

    d = """ time   04:45:00    05:00:00   05:15:00
     date     
     01-01    61           NaN        44
     01-02    23            70        NaN
    """
    
    
    import pandas as pd
    from io import StringIO
    
    df = pd.read_csv(StringIO(d), sep='\s+')
    data = df.iloc[1:,1:].fillna(method='ffill', axis=1)
    data
    
        04:45:00    05:00:00    05:15:00
    1   61.0    61.0    44.0
    2   23.0    70.0    70.0
    

    现在申请pairwise_distances

    from sklearn.metrics.pairwise import pairwise_distances
    pairwise_distances(data)
    
    # array([[ 0.        , 46.91481642],
    #       [46.91481642,  0.        ]])
    
    

    【讨论】:

    • 感谢您的回复,我正在寻找一种方法来忽略 NaN 而不是归咎于它们...
    • @amirhossein,您找到解决方案了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 2014-01-05
    • 1970-01-01
    • 2023-03-10
    • 2012-10-16
    • 2013-09-02
    • 2020-01-30
    相关资源
    最近更新 更多