代码之家  ›  专栏  ›  技术社区  ›  Javiss

如何将字符串的numpy数组转换为集合的numpy数组以使用MultiLabelBinarizer?

  •  0
  • Javiss  · 技术社区  · 6 年前

    我有这样一个numpy阵列:

    l1 = (['United States', 'England', 'South Africa']). 
    

    有时,它可能会>1值:

    l1 = ([['United States','South Korea'], 'England', 'South Africa'])
    

    我想使用MultiLabelBinarizer对这些值进行编码。根据 fit\u变换 在scikit学习文档中。参数应该是

    y:iterable中的iterable 每个示例的一组标签(任何可排序和哈希对象)。如果设置了classes参数,则不会迭代y。

    如何将这个列表和单个字符串的numpy数组转换为集合?

    我试过这个:

    value = [set(v) for v in l1]
    list_2sets = np.asarray(value)
    

    但它似乎不能正常工作。

    问题是我没有考虑到(所有国家)的价值观。如果我有这个,我会尝试以下方法:

     mlb.fit_transform(headings.split(', ') for headings in l1)
    

    标题是所有考虑值的列表:

    ['England','Spain', ...]
    

    但到目前为止,我还没有这些值,所以我想尝试在没有' 标题 '

    1 回复  |  直到 6 年前
        1
  •  1
  •   MaxU - stand with Ukraine    6 年前

    尝试按如下方式预处理字符串数组:

    In [50]: l1 = [[x] if isinstance(x, (str)) else x for x in l1]
    
    In [51]: l1
    Out[51]: [['United States', 'South Korea'], ['England'], ['South Africa']]
    

    对于Python 2。x:

    In [50]: l1 = [[x] if isinstance(x, (str, unicode)) else x for x in l1]
    
    In [51]: l1
    Out[51]: [['United States', 'South Korea'], ['England'], ['South Africa']]