使用 scikit learn 进行分类
Categorization with scikit learn
我在之前的 post 中询问过如何对连续预测变量进行分类。建议使用 pd.cut 或 pd.qcut:
我想知道这些函数的作用:
http://scikit-learn.org/stable/modules/multiclass.html#multilabel-classification-format
让那个包负责分类而不是自己做是否有意义?
MultiLabelBinarizer
不会制作垃圾箱,它会为每个垃圾箱分配不同的类别。
例如,如果我们有一个 y
,如示例所示,我们有 4 个唯一值,MultiLabelBinarizer
将 return 一个形状为 (4, 2) 的数组。但是如果我们有浮动,我们将为每个数字 return 一个不同的类别。
from sklearn.preprocessing import MultiLabelBinarizer
y = [[1.1, 2.2], [1.3, 1.4, 1.1]]
print(MultiLabelBinarizer().fit_transform(y))
# [[1 0 0 1]
# [1 1 1 0]]
所以首先你需要制作垃圾箱(在本例中为圆形):
# round the y
round_y = []
for arr in y:
round_y.append([round(i) for i in arr])
print(round_y)
# [[1, 2], [1, 1, 1]]
print(MultiLabelBinarizer().fit_transform(round_y))
# [[1 1]
# [1 0]]
我在之前的 post 中询问过如何对连续预测变量进行分类。建议使用 pd.cut 或 pd.qcut:
我想知道这些函数的作用:
http://scikit-learn.org/stable/modules/multiclass.html#multilabel-classification-format
让那个包负责分类而不是自己做是否有意义?
MultiLabelBinarizer
不会制作垃圾箱,它会为每个垃圾箱分配不同的类别。
例如,如果我们有一个 y
,如示例所示,我们有 4 个唯一值,MultiLabelBinarizer
将 return 一个形状为 (4, 2) 的数组。但是如果我们有浮动,我们将为每个数字 return 一个不同的类别。
from sklearn.preprocessing import MultiLabelBinarizer
y = [[1.1, 2.2], [1.3, 1.4, 1.1]]
print(MultiLabelBinarizer().fit_transform(y))
# [[1 0 0 1]
# [1 1 1 0]]
所以首先你需要制作垃圾箱(在本例中为圆形):
# round the y
round_y = []
for arr in y:
round_y.append([round(i) for i in arr])
print(round_y)
# [[1, 2], [1, 1, 1]]
print(MultiLabelBinarizer().fit_transform(round_y))
# [[1 1]
# [1 0]]