处理文本:
使用的全国高校应用创新大赛的数据集,共有两万条
注意:文本的编码格式,一般为utf-8或者gb18030,
经常报错的:
1 UnicodeDecodeError: 'gbk' codec can't decode byte 0xfd in position 3061: illegal multibyte sequence
解决:with open('training-inspur.csv', 'r',encoding="gb18030",,errors="ignore") as csvfile:
#此处csv文件是以逗号分隔的,因此它可以和txt文档相互转换
2 还有一个问题就是无论编码格式怎么改都会报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd2 in position 0: invalid continuation byte
解决:此处其实是因为我们并没有把文本的格式修改正确,需要将csv文件用记事本打开,另存为,改为utf-8格式,此时便不会再报错了
文本预处理:
1 采用的数据集将旅游内容分为3个等级,其中第一等级的数据为7000条,第二等级:6000条,第三等级7000条,在svm中我们采用了方法train_test_split,他打乱数据后,按一定比例将数据集分为训练集和测试集,但是这样的方法可能会导致训练集和测试集中3个等级分布不均,因此在后面的完成中,为了使模型训练的更好,我将数据的测试集集改为1(1500)、2(1000)、3(1500),认为这样更有利于模型训练。
2 在svm中,如果数据集出现重复数据,准确率会有所提高的(盗图),但效果不是很明显
文本分等级合并文件(路径我都用的是绝对路径,这样的好处是不会使你的工作空间文件太多)
import random
import csv
import pandas as pd
import os
import glob
filename='C:/Users\huhu\Desktop\huhu\ceshi/train_usual.txt'
filename_test='../data/test_usual.txt'
fileName1='C:/Users\huhu\Desktop\huhu\ceshi/level1.csv'
fileName2='C:/Users\huhu\Desktop\huhu\ceshi/level2.csv'
fileName3='C:/Users\huhu\Desktop\huhu\ceshi/level3.csv'
def divide_file():
"""按照等级分数据"""
with open('C:/Users\huhu\Desktop\huhu\ceshi/line/training-inspur.csv','r',encoding="utf-8",errors="ignore") as csvfile:
reader = csv.reader(csvfile)
for row in reader:
if row[2]=='1':
fm = open(fileName1, "a+",encoding="utf-8",newline="")
csv_writer = csv.writer(fm,dialect="excel")
csv_writer.writerow(row)
if row[2]=='2':
# column=row[1]
# fm = open(fileName2, "a+", encoding="gb18030")
# fm.write(row[2] + '\t' + column + '\n')
fm = open(fileName2, "a+", encoding="utf-8", newline="")
csv_writer = csv.writer(fm, dialect