• 基于朴素贝叶斯的书籍评价信息分类任务


    import pandas as pd
    import jieba
    from sklearn.feature_extraction.text import CountVectorizer
    import numpy as np
    from sklearn.naive_bayes import MultinomialNB
    
    # 加载数据
    data = pd.read_csv("./data.csv",encoding='ansi')
    
    print("data:
    ",data)
    print("data 的列名:
    ",data.columns)
    
    
    # 将特征值 与目标值转化为数值类型
    data.loc[data.loc[:,"评价"] == '好评','评价'] = 0
    data.loc[data.loc[:,"评价"] == '差评','评价'] = 1
    
    # 将object 转化为int类型
    data.loc[:,"评价"]  = data.loc[:,"评价"].astype('int')
    # print(data)
    # print(data.dtypes)
    
    # 转化特征值为数值型
    content_list = []
    for tmp in data.loc[:,'内容 ']:
        res = jieba.cut(tmp,cut_all=False)
        # 组装分词
        res_str = ",".join(res)
    
        content_list.append(res_str)
    
    print(content_list)
    
    # 处理停用词
    stop_words = []
    with open("./stopwords.txt",encoding='utf-8') as f:
        lines = f.readlines()
        for line in lines:
            line_obj = line.strip()
            stop_words.append(line_obj)
        # print(lines)
    # 打印停用词结果
    # print(len(stop_words))
    # 去重重复的停用词
    stop_words = list(set(stop_words))
    # print(len(stop_words))
    # 进行统计词数
    con_vec = CountVectorizer(stop_words=stop_words)
    
    # 统计分词
    X = con_vec.fit_transform(content_list)
    
    feature = X.toarray()
    # 获取分词结果
    names = con_vec.get_feature_names()
    # print(names)
    # print(feature)
    
    # 将特征值与目标值组成完整的数据
    new_data  = np.concatenate((feature,data.loc[:,'评价'].values.reshape((-1,1))),axis=1)
    
    print(new_data)
    print(new_data.shape)
    
    # 数组的 除了最后一列 其余的都是特征值, 最后一列为目标值
    # 拆分成训练集 与测试集
    train_data = new_data[:10,:]
    test_data = new_data[10:,:]
    
    # 拆分特征值 与目标值
    x_train = train_data[:,:-1]
    y_train = train_data[:,-1]
    
    x_test = test_data[:,:-1]
    y_test = test_data[:,-1]
    
    # 直接进行朴素贝叶斯分类
    #  alpha 拉普拉斯平滑系数
    nb = MultinomialNB(alpha=1.0)
    #训练数据
    nb.fit(x_train,y_train)
    
    #预测数据
    y_predict = nb.predict(x_test)
    
    #准确率
    score = nb.score(x_test,y_test)
    
    print("*"*80)
    print("y_predict :
    ",y_predict)
    print("准确率:
    ",score)
  • 相关阅读:
    Winform 的一个多线程绑定DataGrid数据源的例子
    General Database Adapter for Biztalk Server 2006 介绍
    Developing a Transactional Biztalk adapter
    整理了一些DataGrid ColumnStyle
    Biztalk 调用带Soap Head WebService的方法
    提问:如何控制控制台程序的输入/输出焦点的位置
    Biztalk 2006 adapter的开发比2004容易的多
    数据库同步设计方案
    解决Microsoft Visual Studio Code Name "Orcas" 不能安装的问题
    C# 退出提示 事件提示两次问题
  • 原文地址:https://www.cnblogs.com/wutanghua/p/11559496.html
Copyright © 2020-2023  润新知