如何使用单独的训练和测试文件进行python机器学习?

时间:2018-03-22 20:47:31

标签: python python-2.7 machine-learning sentiment-analysis naivebayes

我必须在课堂上使用机器学习,我有训练数据集和测试数据集,这对我来说非常困难,因为我不是来自编码背景,他们在我选择之前告诉我这个课程适合没有太多先验知识的人。

我已将训练数据处理成csv文件,其中第一列是评论,第二列是1或0形式的情绪

我已加载文件并按此处理:

def load_file():
with open('trainingdatafile.csv') as csv_file:
    reader = csv.reader(csv_file, delimiter=",", quotechar='"')
    reader.next()
    data = []
    target = []
    for row in reader:
        # skip missing data
        if row[0] and row[1]:
            data.append(row[0])
            target.append(row[1])

    return data, target

我已经处理了这样的数据:

def preprocess():
    data, target = load_file()
    count_vectorizer = CountVectorizer(binary='true')
    data = count_vectorizer.fit_transform(data)
    tfidf_data = TfidfTransformer(use_idf=False).fit_transform(data)

return tfidf_data

我找到了一种方法可以让它在我将训练数据分开并使用其中一部分进行训练而其余部分进行测试时如此:

def learn_model(data, target):
# preparing data for split validation. 60% training, 40% test
data_train, data_test, target_train, target_test = cross_validation.train_test_split(data, target, test_size=.2,
                                                                                     random_state=1)
classifier = BernoulliNB().fit(data_train, target_train)
predicted = classifier.predict(data_test)
evaluate_model(target_test, predicted)

其余代码在这里:

def evaluate_model(target_true, target_predicted):
print classification_report(target_true, target_predicted)
print "The accuracy score is {:.2%}".format(accuracy_score(target_true, target_predicted))

def main():
    data, target = load_file()
    tf_idf = preprocess()
    learn_model(tf_idf, target)

调整代码的最佳方法是什么,以便我可以使用培训数据评估我的test.csv文件?我真的很困惑如何实现我想要的,所以任何帮助都会非常感激。

0 个答案:

没有答案