资源简介

从读取文件、去除重用词、正则化、到词向量、再到预测分类。最后ROC曲线评估,一整套(带数据集),下载即运行。如果好用,还请给个好评

资源截图

代码片段和文件信息

import re
import jieba
import pandas as pd
# 导入文本特征向量转化模块
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import classification_report

def text_save(filename data):                              #   filename为写入CSV文件的路径,data为要写入数据列表.
    file = open(filename‘a‘)
    for i in range(len(data)):
        s = str(data[i]).replace(‘[‘‘‘).replace(‘]‘‘‘)    #   去除[]这两行按数据不同,可以选择
        s = s.replace(“‘“‘‘).replace(‘‘‘‘) +‘\n‘         #   去除单引号,逗号,每行末尾追加换行符
        file.write(s)
    file.close()
    print(“保存文件成功“)

def process():
    # -------------第一部分:读取数据--------------------------
    fulltrain = pd.read_csv(‘DataC/microwave.csv‘ encoding=‘gb18030‘)
    datatrain = fulltrain[‘star_rating‘].values  # 转换为数组
    # print(type(datatrain))
    # # print(datatrain.dtype)
    for i in range(0 len(datatrain)):
        if datatrain[i] >= 3:  # 大于等于3的变成1,其余为0
            datatrain[i] = 1
        else:
            datatrain[i] = 0
    # print(data)
    dataxtrain = fulltrain[‘review_body‘].values
    print(len(dataxtrain))

    # -------------第二部分:数据处理--------------------------
    pattern = r“(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)|([a-zA-Z]+.\w+\.+[a-zA-Z0-9\/_]+)“
    restrain = []
    for i in dataxtrain:
        tmp = ‘‘.join(str(str(i).replace(‘\n‘ ‘‘)))  # 去掉换行符
        # print(tmp)
        tmp = re.sub(pattern ‘‘ tmp)  # 去掉网站
        # print(tmp)
        remove_digits = str.maketrans(‘‘ ‘‘ ‘0123456789‘)  # 去除数字
        tmp = tmp.translate(remove_digits)
        # print(tmp)
        restrain.append(tmp)
    print(“train总计:“ len(restrain))

    # -----------------第三部分:分词,去除停用词--------------------
    stop_word = {}.fromkeys([‘,‘ ‘。‘ ‘!‘ ‘this‘ ‘me‘ ‘very‘ ‘is‘ ‘、‘ ‘:‘ ‘;‘ ‘(‘ ‘)‘ ‘-‘ ‘:‘])
    print(“中文分词后结果:“)
    corpustrain = []
    for a in restrain:
        seg_list = jieba.cut(a.strip() cut_all=False)  # 精确模式
        final = ‘‘
        for seg in seg_list:
            if seg not in stop_word:  # 非停用词,保留
                final += seg

        seg_list = jieba.cut(final cut_all=False)
        output = ‘ ‘.join(list(seg_list))
        # print(output)
        corpustrain.append(output)
    print(len(corpustrain))

    # -------------------第四部分将文本中的词语转换为词频矩阵--------------------------------
    vectorizer = CountVectorizer()
    # 计算各词语出现的次数
    Xtrain = vectorizer.fit_transform(corpustrain)
    # 获取词袋中所有文本关键词
    # word = vectorizer.get_feature_names()
    # # 查看词频结果
    # # print(len(word))
    # for w in word:
    #     print(wend=“ “)
    # print(“ “)
    # print(“词频矩阵:“)
    Xtrain = Xtrain.toarray()
    # print(“矩阵len:“len(X))
    # np.set_printoptions(threshold=np.inf)
    # print(X)

    # -----------------------------第五部分-数据分析---------------------
    print(“数据分析:“)
    x_train = Xtrain[:1300]
    y_train = datatrain[:130

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4548  2020-03-07 18:00  BayesianModel\BayesianMicrowave.py

     文件    1035040  2020-03-06 10:05  BayesianModel\DataC\microwave.csv

     文件       1402  2020-03-12 12:14  BayesianModel\ROC.py

     目录          0  2020-03-12 12:15  BayesianModel\DataC

     目录          0  2020-03-12 12:15  BayesianModel

----------- ---------  ---------- -----  ----

              1040990                    5


评论

共有 条评论