zoukankan      html  css  js  c++  java
  • 分类:贝叶斯分类之新闻组数据组学习(查看数据类型的方法)(环境:Pycharm)

    1、查看数据类型:
    type(数据)(在下面的探究中会标注出来)
    2、初步探究(重点是机器学习模型只能处理数值数据,所以新闻样本集里的每一个文本样本都要转为TF-IDF向量。)

    from sklearn.datasets import fetch_20newsgroups
    from sklearn.feature_extraction.text import TfidfVectorizer
    news=fetch_20newsgroups()
    print(news.data[0]) #输出news.data数据里的第一行数据内容
    print(type(news.data[0]))#查看news.data数据的类型,查看第一行数据内容就行
    vectorizer=TfidfVectorizer()
    vdata=vectorizer.fit_transform(news.data)
    print(vdata.shape) #11314个样本转为TF-IDF向量
    print(vdata.nnz) #非零元素数量
    
    注:**新闻样本集里的一个文本样本大多是几百个字符,转为TF-IDF向量后,特征维超过13万个,而每个样本的非零特征维平均只有158个,可见这个数据集是非常稀疏的,适用于先验分布为多项式分布的朴素贝叶斯分类模型MultinomialNB** (在Scikit-learn朴素贝叶斯模块naive_bayes中,一共有三个朴素贝叶斯分类模型类,其中GaussianNB是先验分布为高斯分布的朴素贝叶斯,MultinomialNB是先验分布为多项式分布的朴素贝叶斯,BernoulliNB是先验分布为伯努利分布的朴素贝叶斯)

    3、数据集整体再探究

    from sklearn.datasets import fetch_20newsgroups
    from sklearn.feature_extraction.text import TfidfVectorizer #TF-IDF向量
    from sklearn.naive_bayes import MultinomialNB #导入多项式分布的朴素贝叶斯模型
    from sklearn.model_selection import train_test_split as tsplit 
    from sklearn.metrics import classification_report #导入分类结果报告函数
    X,y=fetch_20newsgroups(return_X_y=True) #获取新闻数据集合分类标签集
    vectorizer=TfidfVectorizer()
    vdata=vectorizer.fit_transform(X) #文本转为TF-IDF向量
    x_train,x_test,y_train,y_test=tsplit(vdata,y,test_size=0.1)
    m=MultinomialNB() #实例化多项式分布的朴素贝叶斯分类模型
    m.fit(x_train,y_train) #模型训练
    precision=m.score(x_test,y_test)
    print("测试集分类准确率:%0.2f"%precision)
    y_pred=m.predict(x_test)
    report=classification_report(y_test,y_pred)
    print("测试集分类结果报告:
    ",report)
    

    4、贝叶斯分类是基于朴素贝叶斯算法的模型,朴素贝叶斯的假设每个输入变量都是独立的。朴素贝叶斯分类模型的原理是:在给出的待分类样本中,找出当前条件下出现概率最大的类别,此类别即为待分类样本的所属类别。

  • 相关阅读:
    Day1_Python基础
    选择排序(java版)
    冒泡排序(java版)
    手写数据库连接池(动态代理)
    JDBC增删查改(使用配置文件)
    JDBC demo
    JSP入门&会话技术
    response实现验证码图片
    android 定制自己的日志工具
    服务的最佳实践——后台执行的定时任务
  • 原文地址:https://www.cnblogs.com/lgbdbky/p/14726612.html
Copyright © 2011-2022 走看看