【发布时间】:2019-02-15 15:41:54
【问题描述】:
我已按照site 对我的数据集使用朴素贝叶斯算法。这里数据集分为两个文件,一个是review.txt,另一个是label.txt。我在这里使用了“train_test_split”函数。
我的代码:
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
with open("/Users/abc/review.txt") as f:
reviews = f.read().split("\n")
with open("/Users/abc/label.txt") as f:
labels = f.read().split("\n")
reviews_tokens = [review.split() for review in reviews]
onehot_enc = MultiLabelBinarizer()
onehot_enc.fit(reviews_tokens)
X_train, X_test, y_train, y_test = train_test_split(reviews_tokens, labels, test_size=0.20, random_state=1)
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)
predicted_y = bnbc.predict(onehot_enc.transform(X_test))
tn, fp, fn, tp = confusion_matrix(y_test, predicted_y).ravel()
precision_score = tp / (tp + fp)
recall_score = tp / (tp + fn)
print("precision_score :" , precision_score)
print("recall_score :" , recall_score)
但是,现在我的要求是将数据集放在单个文件(评论,标签)中。而且我需要单独手动提供测试和训练数据。因此,相应地实现了代码。
但是,我不能在这里使用“onehot_enc”。它会抛出错误,因为从“load_data”函数返回的评论是单词列表。
谁能建议我如何使用“onehot_enc”为我的数据集实现我的代码...
因此,为此我使用了以下代码:
train_data.csv:
review,label
Colors & clarity is superb,positive
Sadly the picture is not nearly as clear or bright as my 40 inch Samsung,negative
test_data.csv:
review,label
The picture is clear and beautiful,positive
Picture is not clear,negative
新代码:(在单个 csv 文件中提供评论、标签)
from sklearn.metrics import confusion_matrix
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
def load_data(filename):
reviews = list()
labels = list()
with open(filename) as file:
file.readline()
for line in file:
line = line.strip().split(',')
labels.append(line[1])
reviews.append(line[0])
return reviews, labels
X_train, y_train = load_data('/Users/abc/train_data.csv')
X_test, y_test = load_data('/Users/abc/test_data.csv')
【问题讨论】:
-
this 的可能重复项。两个 csv 文件的 sn-ps 相同,问题描述也非常相似。
标签: python machine-learning scikit-learn