使用NaiveBayes算法的同时如何使用One-hot Encode?

2024-02-27

我正在尝试使用朴素贝叶斯算法来满足我的要求之一。在此,我计划对超平面使用“One-hot Encode”。我使用以下代码来运行我的算法。但是,我不确定如何使用“One-hot Encode”。

请找到下面的代码:

from sklearn.preprocessing import MultiLabelBinarizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import BernoulliNB
from sklearn.metrics import confusion_matrix

def load_data(filename):

    x = list()
    y = list()
    with open(filename) as file:
        file.readline()
        for line in file:
            line = line.strip().split(',')
            y.append(line[1])
            x.append(line[0].split())

    return x, y

X_train, y_train = load_data('/Users/Desktop/abc/train.csv')
X_test, y_test = load_data('/Users/Desktop/abc/test.csv')

onehot_enc = MultiLabelBinarizer()
onehot_enc.fit(X_train)


bnbc = BernoulliNB(binarize=None)
bnbc.fit(onehot_enc.transform(X_train), y_train)

score = bnbc.score(onehot_enc.transform(X_test), y_test)
print("score of Naive Bayes algo is :" , score)

谁能建议我上面编写的代码是否正确?


尝试使用计数向量化器 http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html

from sklearn.feature_extraction.text import CountVectorizer

clf = CountVectorizer()
X_train_one_hot =  clf.fit(X_train)
X_test_one_hot = clf.transform(X_test)

bnbc = BernoulliNB(binarize=None)
bnbc.fit(X_train_one_hot, y_train)

score = bnbc.score(X_test_one_hot, y_test)
print("score of Naive Bayes algo is :" , score)

您也可以尝试使用Tfidf向量化器 http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html如果您要使用文本的 TfIdf 特征化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用NaiveBayes算法的同时如何使用One-hot Encode? 的相关文章

随机推荐