# 机器学习-将多项式朴素贝叶斯应用于NLP问题

`P(c|x) = P(x|c) * P(c) / P(x)`

TEXT

REVIEWS

“I liked the movie”

positive

“It’s a good movie. Nice story”

positive

“Nice songs. But sadly boring ending. ”

negative

“Hero’s acting is bad but heroine looks good. Overall nice movie”

positive

“Sad, boring movie”

negative

TEXT

REVIEWS

“ilikedthemovi”

positive

“itsagoodmovienicestori”

positive

“nicesongsbutsadlyboringend”

negative

“herosactingisbadbutheroinelooksgoodoverallnicemovi”

positive

“sadboringmovi”

negative

P(positive | overall liked the movie) = P(overall liked the movie | positive) * P(positive) / P(overall liked the movie)

P(overall liked the movie | positive)* P(positive) with P(overall liked the movie | negative) * P(negative)

P(overall liked the movie) = P(overall) * P(liked) * P(the) * P(movie)

P(overall liked the movie| positive) = P(overall | positive) * P(liked | positive) * P(the | positive) * P(movie | positive)

WORD

P(WORD | POSITIVE)

P(WORD | NEGATIVE)

overall

1 + 1/17 + 21

0 + 1/7 + 21

liked

1 + 1/17 + 21

0 + 1/7 + 21

the

2 + 1/17 + 21

0 + 1/7 + 21

movie

3 + 1/17 + 21

1 + 1/7 + 21

P(overall | positive) * P(liked | positive) * P(the | positive) * P(movie | positive) * P(postive ) = 1.38 * 10^{-5} = 0.0000138

P(overall | negative) * P(liked | negative) * P(the | negative) * P(movie | negative) * P(negative) = 0.13 * 10^{-5} = 0.0000013

`#导入包 这里用到了NLTK`

`import` `pandas as pd`

`import` `re`

`import` `nltk`

`from` `nltk.corpus import` `stopwords`

`from` `nltk.stem.porter import` `PorterStemmer`

`from` `sklearn.feature_extraction.text import` `CountVectorizer`

`dataset =` `[["I liked the movie", "positive"],`

`["It’s a good movie. Nice story", "positive"],`

`["Hero’s acting is` `bad but heroine looks good.\`

`Overall nice movie", "positive"],`

`["Nice songs. But sadly boring ending.", "negative"],`

`["sad movie, boring movie", "negative"]]`

`dataset =` `pd.DataFrame(dataset)`

`dataset.columns =` `["Text", "Reviews"]`

`nltk.download('stopwords')`

`corpus =` `[]`

`for` `i in` `range(0, 5):`

`text =` `re.sub('[^a-zA-Z]', '', dataset['Text'][i])`

`text =` `text.lower()`

`text =` `text.split()`

`ps =` `PorterStemmer()`

`text =` `''.join(text)`

`corpus.append(text)`

`# 创建单词模型库`

`cv =` `CountVectorizer(max_features =` `1500)`

`X =` `cv.fit_transform(corpus).toarray()`

`y =` `dataset.iloc[:, 1].values`

`# 分隔数据设置训练数据和测试数据`

`from` `sklearn.cross_validation import` `train_test_split`

`X_train, X_test, y_train, y_test =` `train_test_split(`

`X, y, test_size =` `0.25, random_state =` `0)`

`# 使用朴素贝叶斯高斯分布训练数据`

`from` `sklearn.naive_bayes import` `GaussianNB`

`from` `sklearn.metrics import` `confusion_matrix`

`classifier =` `GaussianNB();`

`classifier.fit(X_train, y_train)`

`# 预测测试结果`

`y_pred =` `classifier.predict(X_test)`

`# 制作混乱矩阵`

`cm =` `confusion_matrix(y_test, y_pred)`

`cm`

0 条评论

• ### 机器学习-何为优秀的特征

选择好的特征能让分类器变得有效,这意味着找到好的特征是机器学习中最重要的工作之一。但是怎么样才能获得好的特征?你怎么才能知道，如果你正处理二分类问题。那么好的特...

• ### Flask-5 博客项目包结构重构

在Flask_Blog文件夹中新建一个models.py文件，将上一章中User、Post实体模型代码剪切到这个文件中：

• ### 机器学习-线性回归（Linear Regression）案例

线性回归用于根据连续变量估算实际值（房屋成本，看涨期权，总销售额等）。在这里，我们通过拟合最佳线来建立独立变量和因变量之间的关系。该最佳拟合线称为回归线，并由线...

• ### 原创译文 | 未来几年中国可能会引领人工智能研究领域

据商业分析公司Elsevier今天发布的一份报告显示，如果目前的趋势持续下去，中国将在未来四年内在人工智能研究论文产量上超过欧洲。

• ### OpenWrt软路由的使用体验

答：传统路由器只能进行简单的上网设置，内存小不支持定制，但是软路由有大内存可以在里面安装各种各样的软件来进行自定义操作，不仅仅可以拥有传统路由器的上网功能也可以...

• ### 一图了解，网络7层协议之间的关系

今天是周四（2020-06-04），分享一句谚语 “读书有三到，心到口到眼到” 。分享给大家的是 「网络服务 模块」- 网络7层协议。

• ### Microsoft Silverlight 2正式版

2008年10月14日Silverlight 2的正式版终于发布了！Silverlight作为一种网络技术，为用户带来下一代互联网络的丰富体验，为网络应用开发商...

• ### Nginx四层反向代理

备份一下 /etc/nginx/nginx.conf 文件，然后编辑此文件，内容如下：

• ### Ubuntu下的网络配置

编辑文件/etc/network/interfaces:sudo vi /etc/network/interfaces，并用下面的行来替换有关...

• ### Hadoop Reducer总是能复用为Combiner？

Combiner函数是一个可选的中间函数，发生在Map阶段，Mapper执行完成后立即执行。使用Combiner有如下两个优势：

### 亚乐记

founder软件开发工程师

founder · 软件开发工程师 (已认证)