python - 具有重复项的类的多标签编码

标签 python python-3.x scikit-learn pyspark apache-spark-mllib

如何对包含重复项的列表列进行 n-hot 编码?

类似于 sklearn 中的 MultiLabelBinarizer,它计算重复类的实例数量而不是二值化。

示例输入:

x = pd.Series([['a', 'b', 'a'], ['b', 'c'], ['c','c']])

预期输出:

    a   b   c
0   2   1   0
1   0   1   1
2   0   0   2

最佳答案

我基于 MultiLabelBinarizer 编写了一个新类 MultiLabelCounter代码。

import itertools
import numpy as np

class MultiLabelCounter():
    def __init__(self, classes=None):
        self.classes_ = classes

    def fit(self,y):
        self.classes_ = sorted(set(itertools.chain.from_iterable(y)))
        self.mapping = dict(zip(self.classes_,
                                         range(len(self.classes_))))
        return self

    def transform(self,y):
        yt = []
        for labels in y:
            data = [0]*len(self.classes_)
            for label in labels:
                data[self.mapping[label]] +=1
            yt.append(data)
        return yt

    def fit_transform(self,y):
        return self.fit(y).transform(y)
import pandas as pd
x = pd.Series([['a', 'b', 'a'], ['b', 'c'], ['c','c']])

mlc = MultiLabelCounter()
mlc.fit_transform(x)

# [[2, 1, 0], [0, 1, 1], [0, 0, 2]]

关于python - 具有重复项的类的多标签编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57371409/

相关文章:

python - 属性错误 : MIMEText instance has no attribute 'encode'

python - Python 中的 MCTS *树* 并行化 - 可能吗?

python-3.x - 添加、复制和创建新的 csv 文件

linux - 获取 lsof 命令 Python 3.5 的输出

python - 如何使这个估算器与 scikit-learn 兼容?

python - float64 到 float32 的转换给出了意想不到的结果

python |使用 Pyshark 合并多个 pcap/pcapng 文件

python - 如何使用字典键编写图例?

scikit-learn - 在 scikit-learn 中使用 OneHotEncoder 为分类准备序数和标称特征

python - 似乎无法导入 scikit-learn 的 MLPRegressor