python朴素贝叶斯调参_NLP(9): 机器学习介绍,朴素贝叶斯,python高阶函数应用

本文介绍了机器学习的基本概念,包括监督学习与无监督学习,重点讲解了朴素贝叶斯在文本分类中的应用,如垃圾邮件过滤。同时,探讨了Python中的高阶函数,如lambda表达式、map、filter、reduce和列表推导式的使用。通过实例展示了如何利用这些工具进行数据处理和模型构建。
摘要由CSDN通过智能技术生成

第一节:机器学习

D={X,y}

x:特征

y:标签

f:学习x到y的映射关系

1、机器学习定义:

自动从已有的数据里找出一些规律(与专家系统的区别),然后把学到的这些规律应用到对未来数据的预测值,或者在不确定环境下自动地做出一些决策。

Name

Supervised learning

unsupervised learning

生成模型

朴素贝叶斯

GAN/HMM/LDA/GMM

判别模型

逻辑回归/conditional random field

None

2、Supervised learning

给定一批数据,包含一些样本的特征向量和标签值。学习特征向量到标签值的映射关系。

25552cf092f3fba57056ced5eb3f60c0.png

2.1 Sentiment Classification

3a24df3fbf115c0a0394592ff08f469b.png

线性回归

逻辑回归

朴素贝叶斯

神经网络

SVM

随机森林

Adaboost

CNN

3、Unsupervised learning

对数据的分析,根据数据特征对其进行分类。

k-means

PCA

ICA

MF : 矩阵分解

LSA

LDA: 通过分析文本,分析文本后的主题

4、Generative model VS Discriminative Model

生成模型:训练好的模型,可以生成一些数据,记住每一个样本的特征 p(x,y),p(x)

判别模型:学习两个样本不同的特征 p(y|x)

5、Working Pipeline of constructing models

给定数据

数据清洗

特征工程:时间很长

建模

预测

End-to-end learning:不做特征工程,直接输入数据,比如Seq2seq

6、Train and Test Data

交叉验证在train set 上加入validation set:做超参数调参

第二节:朴素贝叶斯:适合文本分类

1、垃圾邮件分类器

8ca85d5f73f97afebc5da5a602c078d6.png

occurrence of 购买

每个邮件包含十个单词,正常邮件有24个,垃圾邮件有12个。

统计正常邮件中出现购买的概率

统计垃圾邮件中出现购买的概率

p(购买|正常):3/240

p(购买|垃圾):7/120

33533c1dd4cfd63637dfdc32df234458.png

可以计算出每个单词的条件概率,对词库里每个单词计算条件概率

prior information(先验)

在该例子里,正常邮件/垃圾邮件占所有邮件的比例

2、贝叶斯定理

bc613bd60036b439f72f4eba74e784e5.png

3、conditional independence

当x和y条件独立于z时

8841ef9860055ec67fccfaaf98293784.png

Make prediction

168dc675e7eeb89311e843a73fe60e23.png

第三节:Case study 垃圾邮件过滤

9fd4980bebef41a262e1625085b14fbc.png

计算先验概率

列出词库

对于没有出现的单词,它的条件概率需要加入laplace 平滑

对于词库/新邮件里的每个单词,计算它在正常和垃圾邮件中出现的条件概率

对比给定这些单词下,是垃圾邮件还是正常邮件的概率,哪个大就认为该新邮件属于哪个类别。

f63c63b941a1a539b91c85ace750d153.png

当遇到这个新邮件的词很多,做条件概率乘法时,可能值很小,可以使用log将logp1p2p3=logp1+logp2+logp3

第四节:python函数高阶函数的应用

1、lambda表达式:匿名函数

格式:lambda 参数列表:函数体

add_lambda=lambda x,y:x+y

#调用

add_lambda(3,4)

#输出:7

三元运算符

condition=True

print(1 if condition else 2)

#结果1

2、map函数的应用

输入一堆input,经过map函数,输出后返回对应的input的output

8ff18c52bae357250256c53dcd8424fc.png

如何使用map

list1=[1,2,3,4,5]

r=map(lambda x:x+x,list1)

print(list2)

# 结果 [2,4,6,8,10]

m1=map(lambda x,y:x*x+y,[1,2,3,4,5],[1,2,3,4,5])

#result:[2,6,12,20,30]

3、filter过滤器

输入一些input,经过filter的一些条件筛选,过滤掉一些不符合条件的input

4302e927fe1667be0b7d5fa33928325a.png

def is_not_none(s):

return s and len(s.strip())>0

list2=[" "," ","hello","greedy",None,"AI" ]

result=filter(is_not_none,list2) #传入一个条件函数和一个可迭代对象

#result : ["hello","greedy","ai"]

4、reduce函数

将input输入,经过reduce函数,输出一个output

from functools import reduce

f= lambda x,y:x+y

r=reduce(f,[1,2,3,4,5],10)#10为初始化的值

# result:25

9e49047f29e139a0ca965e48708a9fd4.png

5、Python三大推导式

5.1 列表推导式

根据已有的列表推导出新的列表

list1=[1,2,3,4,5]

f=map(lambda x:x+x,list1)#此时为map的对象

#需要转换格式

list(f)

list2=[i*i for i in list 1]

print(list2)# [1,4,9,16,25]

#有选择性的筛选

list4=[i*i for in list1 if i >3]

print(list4)# [16,25]

5.2 集合推导式

list1={1,2,3,4,5}

f=map(lambda x:x+x,list1)#此时为map的对象

#需要转换格式

list(f)

list2={i*i for i in list 1}

print(list2)# {1,4,9,16,25}

#有选择性的筛选

list4={i*i for in list1 if i >3}

print(list4)# {16,25}

5.3 字典推导式

s-={

"zhangsan":20,

"lisi":15,

"wangwu":34

}

#拿出所有的key

s_key=[key+“aaa” for key, value in s.items()] #for后面有两个value

# key和value颠倒

s1={value: key for key , value in s.items()}

#只拿出符合条件的值

s2={key:value for key,value in s.items if key=="lisi"}#15:"lisi"

6、闭包

一个返回值是函数的函数

#调用后打印当前时间

import time

def runtime():

def now_time():

print (time.time())

return now_time

f=runtime()

print(f())

使用f调用runtime函数,再调用f函数。

data.csv

20ba1acc69201e4e04841e8b744d880e.png

cat data.csv

#读出一个文件中带有某个关键字的行

def make_filter(keep):

def the_filter(file_name):

file=open(file_name)

lines=file.readlines()

file.close()

filter_doc=[i for i in lines if keep in i]

return filter_doc

return the filter

filter1=make_filter("8")#这一行调用了make_filter函数,接受了the filter作为返回值

#这里的filter1等于函数the_filter

filter_result=filter1("data.csv")

print(filter_result)# [6,7,8,9,19]

分享到:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值