头歌实训平台--实用机器学习--朴素贝叶斯模型

第1关:利用sklearn构建朴素贝叶斯模型

任务描述

本关任务:编写一个使用贝叶斯分类器完成垃圾邮件分类的程序。

相关知识

为了完成本关任务,你需要掌握:1.朴素贝叶斯模型,2.使用sklearn构建朴素贝叶斯分类器。

朴素贝叶斯模型

贝叶斯方法是一种生成式分类模型,这是一种从概率论上延伸出来的方法。在概率论与统计学中,贝叶斯定理表达了一个事件发生的概率,而确定这一概率的方法是基于与该事件相关的条件先验知识。而利用相应先验知识进行概率推断的过程为贝叶斯推断。

编程要求

根据提示,在右侧编辑器补充代码,完成使用sklearn构建朴素贝叶斯分类器,包括:

  1. 数据处理
  2. 训练测试集的划分
  3. 模型训练
  4. 测试数据预测和AUC计算
  5. 打印AUC

通关代码:

import numpy as np
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
import numpy as np
import pandas as pd
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import roc_auc_score
from sklearn.metrics import classification_report

data_path ='/data/bigfiles/5297379b-7cd5-4239-bcac-e2d361753393'
df = pd.read_csv(data_path, delimiter='\t',header=None)
######Begin ######

# 将label编码
df[0] = df[0].replace(to_replace=['spam', 'ham'], value=[0, 1])

# 完成数据划分及词向量的转化
X = df[1].values
y = df[0].values
X_train_raw,X_test_raw,y_train,y_test=train_test_split(X,y,random_state = 0)
vectorizer = TfidfVectorizer()
x_train = vectorizer.fit_transform(X_train_raw)
x_test = vectorizer.transform(X_test_raw) 

# 构建模型及训练
model = MultinomialNB()
model.fit(x_train,y_train)

#对于测试集x_test进行预测
x_pre_test=model.predict(x_test)
x_pro_test = model.predict_proba(x_test)
#计算验证集的auc值,参数为预测值和概率估计
auc=roc_auc_score(y_test, x_pro_test[:, 1])
###### End ######
print("auc的值:{}".format(auc))

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值