朴素贝叶斯算法

按概率分类

 主要用于文本分类

 

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split

def nb_new():
    """用朴素贝叶斯算法对新闻进行分类"""
    
    # 1)获取数据
    # 从20类新闻数据集中获取所有类别的数据
    news = fetch_20newsgroups(subset="all")
    
    # 2)划分数据集
    # 将数据集划分为训练集和测试集,80%作为训练集,20%作为测试集
    x_train, x_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.2, random_state=42)
    
    # 3)特征工程
    # 使用TF-IDF向量化器将文本转换为特征向量
    transfer = TfidfVectorizer()
    x_train = transfer.fit_transform(x_train)  # 拟合并转换训练数据
    x_test = transfer.transform(x_test)        # 仅转换测试数据,不拟合
    
    # 4)朴素贝叶斯预估器
    # 创建朴素贝叶斯分类器实例
    estimator = MultinomialNB()
    estimator.fit(x_train, y_train)  # 用训练数据拟合模型
    
    # 模型评估
    y_predict = estimator.predict(x_test)  # 用测试数据进行预测
    print("y_predict", y_predict)  # 输出预测结果
    
    # 直接对比真实标签和预测结果
    print("直接对比\n", y_test == y_predict)
    
    # 计算准确率
    score = estimator.score(x_test, y_test)  # 计算模型在测试集上的准确率
    print("准确率", score)  # 输出准确率
    
    return None

# 调用函数进行朴素贝叶斯分类
nb_new()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值