我有一个像那样的numpy数组:
l1 = (['United States', 'England', 'South Africa']).
有时可能有> 1值:
l1 = ([['United States','South Korea'], 'England', 'South Africa'])
我想使用MultiLabelBinarizer来编码这些值。根据scikit-learn文档中 fit_transform 的文档。参数应为
y:可迭代的迭代次数 每个样本的一组标签(任何可订购和可清洗的对象)。如果设置了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', ...]
但到目前为止我还没有这些值,所以我想尝试在没有'标题'的情况下应用MLB
答案 0 :(得分:1)
尝试按如下方式预处理字符串数组:
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']]