sklearn.preprocessing.MultiLabelBinarizer¶
class sklearn.preprocessing.MultiLabelBinarizer(*, classes=None, sparse_output=False)
在可迭代的可迭代对象和多标签格式之间进行转换
尽管集或元组的列表对于多标签数据来说是非常直观的格式,但处理起来很麻烦。该转换器在这种直观格式和支持的多标签格式之间进行转换:一个(样本x类)二进制矩阵,指示类标签的存在。
参数 | 说明 |
---|---|
classes | array-like of shape [n_classes] (optional) 指示类标签的顺序。所有条目都应该是唯一的(不能包含重复的类)。 |
sparse_output | boolean (default: False), 如果需要以CSR稀疏格式输出二进制数组,则设置为true |
属性 | 说明 |
---|---|
classes_ | array of labels 提供classes参数的副本,或者提供适合时找到的分类的排序集。 |
另见:
sklearn.preprocessing.OneHotEncoder
分类特征使用one hot aka-of-K方案进行编码。
示例
>>> from sklearn.preprocessing import MultiLabelBinarizer
>>> mlb = MultiLabelBinarizer()
>>> mlb.fit_transform([(1, 2), (3,)])
array([[1, 1, 0],
[0, 0, 1]])
>>> mlb.classes_
array([1, 2, 3])
>>> mlb.fit_transform([{'sci-fi', 'thriller'}, {'comedy'}])
array([[0, 1, 1],
[1, 0, 0]])
>>> list(mlb.classes_)
['comedy', 'sci-fi', 'thriller']
一个常见的错误是传递列表,从而导致以下问题:
>>> mlb = MultiLabelBinarizer()
>>> mlb.fit(['sci-fi', 'thriller', 'comedy'])
MultiLabelBinarizer()
>>> mlb.classes_
array(['-', 'c', 'd', 'e', 'f', 'h', 'i', 'l', 'm', 'o', 'r', 's', 't',
'y'], dtype=object)
要更正此问题,标签列表应按以下方式传递:
>>> mlb = MultiLabelBinarizer()
>>> mlb.fit([['sci-fi', 'thriller', 'comedy']])
MultiLabelBinarizer()
>>> mlb.classes_
array(['comedy', 'sci-fi', 'thriller'], dtype=object)
方法
方法 | 说明 |
---|---|
fit (self, y) |
适合标签集二值化器,存储 classes_ |
fit_transform (self, y) |
适合标签集二值化器并转换给定标签集 |
get_params (self[, deep]) |
获取此估计量的参数。 |
inverse_transform (self, yt) |
将给定的指标矩阵转换为标签集 |
set_params (self, **params) |
设置此估算器的参数。 |
transform (self, y) |
转换给定的标签集 |
__init__(self, *, classes=None, sparse_output=False)
初始化self,有关准确的签名,请参见help(type(self))。
fit(self, y)
适合标签集二值化器,存储classes_
参数 | 说明 |
---|---|
y | iterable of iterables 每个样本的一组标签(任何可排序和可哈希的对象)。如果设置了classes参数,则不会迭代y。 |
返回值 | 说明 |
---|---|
self | returns this MultiLabelBinarizer instance |
fit_transform(self, y)
适合标签集二值化器并转换给定标签集
参数 | 说明 |
---|---|
y | iterable of iterables 每个样本的一组标签(任何可排序和可哈希的对象)。如果设置了classes参数,则不会迭代y。 |
返回值 | 说明 |
---|---|
y_indicator | array or CSR matrix, shape (n_samples, n_classes) 当y [i]中的y_indicator [i,j] = 1且y [i]中的矩阵,否则为0。 |
get_params(self, deep=True)
获取此估计量的参数。
参数 | 说明 |
---|---|
deep | bool, default=True 如果为True,则将返回此估算器和作为估算器的所包含子对象的参数。 |
返回值 | 说明 |
---|---|
params | mapping of string to any 参数名称映射到其值。 |
inverse_transform(self, yt)
将给定的指标矩阵转换为标签集
参数 | 说明 |
---|---|
yt | array or sparse matrix of shape (n_samples, n_classes) 仅包含1和0的矩阵。 |
返回值 | 说明 |
---|---|
y | list of tuples 每个样本的标签集,使得y [i]由每个yt [i,j] == 1的classes_ [j]组成。 |
set_params(self, **params)
设置此估算器的参数。
该方法适用于简单的估计器以及嵌套对象(例如管道)。
他后者具有以下形式的参数 <component>__<parameter>
这样就可以更新嵌套对象的每个组件。
参数 | 说明 |
---|---|
**params | dict 估算器参数。 |
返回值 | 说明 |
---|---|
self | object 估算器实例。 |
transform(self, y)
转换给定的标签集
参数 | 说明 |
---|---|
y | iterable of iterables 每个样本的一组标签(任何可排序和可哈希的对象)。如果设置了classes参数,则不会迭代y。 |
返回值 | 说明 |
---|---|
y_indicator | array or CSR matrix, shape (n_samples, n_classes) 当y [i]中的y_indicator [i,j] = 1且y [i]中的矩阵,否则为0。 |