Вы можете сделать это с sklearn.preprocessing.MultiLabelBinarizer
import numpy as np
labels = np.array([list(['noise']), list(['noise']), list(['noise', 'point_source']),
list(['noise']), list(['noise', 'point_source']),
list(['noise', 'point_source']), list(['noise', 'point_source']),
list(['noise', 'point_source']), list(['noise']), list(['noise']),
list(['noise', 'point_source']), list(['noise']),
list(['noise', 'point_source']), list(['noise', 'point_source']),
list(['noise']), list(['noise', 'point_source']),
list(['noise', 'point_source']), list(['noise']), list(['noise'])])
Это было то, что вы имели. Теперь вам нужно сделать следующее:
from sklearn.preprocessing import MultiLabelBinarizer
as_list = [list(i) for i in labels]
mlb = MultiLabelBinarizer()
ohe = mlb.fit_transform(as_list) # you might need to add .astype(float)
Вот что вы получите:
array([[1, 0],
[1, 0],
[1, 1],
[1, 0],
[1, 1],
[1, 1],
[1, 1],
[1, 1], ...