svm旅游内容等级分类

处理文本:

使用的全国高校应用创新大赛的数据集,共有两万条

http://117.50.29.62/

 注意:文本的编码格式,一般为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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值