拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 为不同算法重塑机器学习输入资料

为不同算法重塑机器学习输入资料

白鹭 - 2022-01-26 2074 0 0

我正在使用一些 NLTK 型别的教程在 sklearn 学习分类中进行试验。有人可以帮我理解为什么sklearn MLP 神经网络可以处理不同的输入形状而其他分类器不能吗?

我的输入training资料是一个numpy.ndarray形状(62, 2)

这是我唯一知道如何进行训练测验拆分的事情(如果有更好的建议,任何提示都值得赞赏)

train_x = list(training[:,0])
train_y = list(training[:,1])

如果我,资料看起来像这样print(train_y)

[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
 [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],

MLP 分类器似乎作业得很好。

model = MLPClassifier(learning_rate_init=0.0001,max_iter=9000,shuffle=True).fit(train_x, train_y)

但是,如果我尝试使用其他 sklearn 分类器,例如:

model = GaussianNB().fit(train_x, train_y)

我得到错误: ValueError: y should be a 1d array, got an array of shape (62, 15) instead.

我想我需要.reshape(-1,1)在我的代码中加入某个地方,但不确定在哪里。任何提示在这里都不是很多智慧。

uj5u.com热心网友回复:

据我所见,标签yone-hot表格中。基本上标签是一个大小等于类数的矢量。该矢量的每个元素都为零,除了代表确切类的索引。那个元素是一个这就是为什么 y 的形状是(62, 15)

您需要将标签y转换为您的标签将表示为整数的形式。

示例:在此示例中,我们有 6 个类: ranging from 0 to 5

[0, 0, 0, 1, 0, 0] -> 3

[1, 0, 0, 0, 0, 0] -> 0

[0, 1, 0, 0, 0, 0] -> 1

您可以通过使用numpy.argmax(y, axis=1)which来执行此操作,它将回传沿指定轴具有最大值的元素的索引。看看档案

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *