gpt4 book ai didi

python - scikit-learn 将额外数据添加到 SGDClassifier

转载 作者:行者123 更新时间:2023-11-30 09:40:53 24 4
gpt4 key购买 nike

我正在尝试使用 scikit-learn 进行文本分类。

我的文本无法很好地分类。我认为我可以通过添加可以以整数数组的形式推导的数据来改进预测。

例如,示例 1 将带有 [3, 1, 5, 2],示例 2 将带有 [2, 1, 4, 2]。测试数据也是如此。

这个想法是分类器可以使用文本和数字来对数据进行分类。

我已阅读 scikit learn 的文档,但找不到如何操作。这一定是可能的,因为所有内部分类的都是数字向量。因此,添加另一个数字向量应该不是什么大问题,但我不知道如何做。 partial_fit 添加了更多样本,但没有添加有关现有样本的更多信息。有没有办法做我想做的事情。我尝试将 GaussianNB 与 SGDClassifier 结合起来,但事实证明我不知道该怎么做。 (这是一个坏主意吗?)

我应该做什么?

最佳答案

我认为您可以将这个新功能添加为训练数据的另一个维度。在调用 SGD 之前,您需要通过添加新功能来修改训练数据。

一个简单/天真的方法是:

例如,如果我的两个样本的训练数据是X = [ [1,2,3], [8,9,0] ]

每个样本的新功能是new_feature_X = [ [11,22,33] , [77,88,00] ]

我的新训练数据是:

X_new = [[1,2,3,11,22,33] , [8,9,0,77,88,00]]

然后调用SGD.fit(X_new, labels)

就我的 SGD 知识而言,我认为没有其他方法可以结合两个功能。

The idea is that the classifier could use both the text and the numbers to classify the data.

我发现神经网络更适合于此。您可以使用两个输入层,一层用于文本向量,一层用于数字,并将它们一起输入网络以获得输出。

I tried to combine GaussianNB with SGDClassifier, but it turns out I don't know how to do that. (Was it a bad idea?)

SGD 表示随机梯度下降。是否可以找到 NaiveBayes 的梯度?相应的成本函数是多少?

What should I do?

  1. 合奏。训练两个单独的分类器。一个使用您的文本数据,另一个用于您的新手工功能。然后取他们预测概率的平均值。您可以训练多个分类器并进行投票。这个tutorial对此非常有用。

  2. 尝试 MLP 分类器。我不久前使用过它,发现它对于文本的效果非常好。

  3. 神经网络。使用 Keras 非常简单.

  4. 阅读研究文献。学术界很有可能对您的数据集做了一些工作。尝试阅读其中的一些内容。 Google 学者、语义学者是查找已发表研究成果的好地方。

from keras.layers import Input, Dense,Concatenate
from keras.models import Model

# This returns a tensor
text_input_vec = Input(shape=(784,))
new_numeric_feature = Input(shape=(4,))

# feed your text to a dense layer
dense1 = Dense(64, activation='relu')(text_input_vec)

# feed your numeric feature to another dense layer
dense2 = Dense(64, activation='relu')(new_numeric_feature)

# concatenate/combine the output of both
concat = Concatenate(axis=-1)([dense1,dense2])

# use the above to predict the label of your text. Layer below
# assumes you have 2 classes
predictions = Dense(2, activation='softmax')(concat)

model = Model(inputs=[text_input_vec,new_numeric_feature], outputs=predictions)
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])

model.summary()

关于python - scikit-learn 将额外数据添加到 SGDClassifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58759631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com