bra*_*son 5 python python-3.x scikit-learn pyspark apache-spark-mllib
如何对具有重复项的列表列进行 n-hot 编码?
类似于MultiLabelBinarizer来自 sklearn 的东西,它计算重复类的实例数而不是二值化。
示例输入:
x = pd.Series([['a', 'b', 'a'], ['b', 'c'], ['c','c']])
Run Code Online (Sandbox Code Playgroud)
预期输出:
a b c
0 2 1 0
1 0 1 1
2 0 0 2
Run Code Online (Sandbox Code Playgroud)
我已经MultiLabelCounter根据MultiLabelBinarizer代码编写了一个新类。
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)
Run Code Online (Sandbox Code Playgroud)
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]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |