1.Tf-idf算法简介

2.随机森林多分类回顾——鸢尾花数据集

_author_ = '张起凡'
import pandas as pd
import sklearn
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier# 1.tf-idf算法简介
# 2.随机森林多分类回顾
data = pd.read_csv('./数据集/iris.data', header=None,names=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'cla'])
# pd.set_option('display.max_columns', 100)
print(data.head())
print(data.cla.unique())  # 共有三类
x = data.iloc[:, :-1]  # 取所有行,前四列
y = data.iloc[:, -1]  # 取最后一列
x_train, x_test, y_train, y_test = train_test_split(x, y)
print(x_train.shape, x_test.shape)
model = RandomForestClassifier()
model.fit(x_train, y_train)
print(model.score(x_train, y_train))  # 训练集上的正确率
print(model.score(x_test, y_test))  # 测试集上的正确率
print(model.predict(x_test))

3.航空公司评论数据预处理

# 3.航空公司评论数据预处理
data=pd.read_csv('./数据集/Tweets.csv')
# 核心代码,设置显示的最大列、宽等参数,消掉打印不完全中间的省略号
pd.set_option('display.max_columns', 1000)
pd.set_option('display.width', 1000)
pd.set_option('display.max_colwidth', 1000)
print(data.head())
data=data[['airline_sentiment','text']]
print(data)
print(data.airline_sentiment.unique()) # 查看评价情绪的种类
print(data.airline_sentiment.value_counts()) # 查看每种评价的计数内容
# 文本规范化
import re # 引入正则表达式
token=re.compile(r'[A-Za-z]+|[!?.:,()]')
def extract_text(text):new_text=token.findall(text)new_text=' '.join([x.lower() for x in new_text])return new_text
# 在某一列上应用函数
x=data.text.apply(extract_text)
print(x)
y=data.airline_sentiment
print(y)

4.航空公司评论数据预处理:

# 4.航空公司评论数据预处理2
# 划分训练数据和测试数据
'''
先划分再向量化
'''
x_train,x_test,y_train,y_test=train_test_split(x,y)
# 文本向量化处理
from sklearn.feature_extraction.text import TfidfVectorizer
vect=TfidfVectorizer(ngram_range=(1,3),stop_words='english',min_df=3)
# 转换数据
x_train_vect=vect.fit_transform(x_train)
print(type(x_train_vect))
x_test_vect=vect.transform(x_test)

5.文本分类的模型实现

# 5.文本分类的模型实现
model=RandomForestClassifier()
model.fit(x_train_vect,y_train)
print(model.score(x_train_vect,y_train))
print(model.score(x_test_vect,y_test))
# 优化目标,抑制过拟合
model2=RandomForestClassifier(n_estimators=500)
model2.fit(x_train_vect,y_train)
print(model2.score(x_train_vect,y_train))
print(model.score(x_test_vect,y_test))
from sklearn.model_selection import GridSearchCV
param={'max_depth':range(1,500,10),'criterion':['gini','entropy']
}
grid_s=GridSearchCV(RandomForestClassifier(n_jobs=8),param_grid=param,cv=5)
x_vect=vect.transform(x)
grid_s.fit(x_vect,y)
print(grid_s.best_score_)
print(grid_s.best_params_)

6.朴素贝叶斯算法原理:

 

 

7.朴素贝叶斯算法解决文本分类实例

# 6.朴素贝叶斯算法解决文本分类实现
print('——————————————————————————以下为朴素贝叶斯算法——————————————————————————————')
from sklearn.naive_bayes import MultinomialNB
model=MultinomialNB(alpha=0.0001)
model.fit(x_train_vect,y_train)
print('在训练集上得分')
print(model.score(x_train_vect,y_train))
print('在测试集上得分')
print(model.score(x_test_vect,y_test))
# 利用循环找到较好的参数取值
test_score=[]
alpht_=np.linspace(0.00001,0.01,100)
for a in alpht_:model=MultinomialNB(alpha=a)model.fit(x_train_vect,y_train)test_score.append(model.score(x_test_vect,y_test))
max_score=max(test_score)
print('最高得分为:',max_score)
index=test_score.index(max_score)
print('下标为:',index)
print('最佳参数为:',alpht_[index])

8.模型的评价:查准率,召回率,F1-score及混淆矩阵

from sklearn.metrics import classification_report
best_alpha=alpht_[index]
model=MultinomialNB(alpha=best_alpha)
model.fit(x_train_vect,y_train)
pred=model.predict(x_test_vect) # 进行预测
# print(pred)
import pprint
print(classification_report(y_test,pred))

混淆矩阵:

# 还可以使用混淆矩阵
from sklearn.metrics import confusion_matrix
cm=confusion_matrix(y_test,pred)
print(cm)
import matplotlib.pyplot as plt
plt.matshow(cm)
plt.colorbar()
plt.show()

9.完整代码:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
_author_ = '张起凡'
import numpy as np
import pandas as pd
import sklearn
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier# 1.tf-idf算法简介
# 2.随机森林多分类回顾
data = pd.read_csv('./数据集/iris.data', header=None,names=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'cla'])
# pd.set_option('display.max_columns', 100)
print(data.head())
print(data.cla.unique())  # 共有三类
x = data.iloc[:, :-1]  # 取所有行,前四列
y = data.iloc[:, -1]  # 取最后一列
x_train, x_test, y_train, y_test = train_test_split(x, y)
print(x_train.shape, x_test.shape)
model = RandomForestClassifier()
model.fit(x_train, y_train)
print(model.score(x_train, y_train))  # 训练集上的正确率
print(model.score(x_test, y_test))  # 测试集上的正确率
print(model.predict(x_test))# 3.航空公司评论数据预处理
data = pd.read_csv('./数据集/Tweets.csv')
# 核心代码,设置显示的最大列、宽等参数,消掉打印不完全中间的省略号
pd.set_option('display.max_columns', 1000)
pd.set_option('display.width', 1000)
pd.set_option('display.max_colwidth', 1000)
print(data.head())
data = data[['airline_sentiment', 'text']]
print(data)
print(data.airline_sentiment.unique())  # 查看评价情绪的种类
print(data.airline_sentiment.value_counts())  # 查看每种评价的计数内容
# 文本规范化
import re  # 引入正则表达式token = re.compile(r'[A-Za-z]+|[!?.:,()]')def extract_text(text):new_text = token.findall(text)new_text = ' '.join([x.lower() for x in new_text])return new_text# 在某一列上应用函数
x = data.text.apply(extract_text)
print(x)
y = data.airline_sentiment
print(y)# 4.航空公司评论数据预处理2
# 划分训练数据和测试数据
'''
先划分再向量化
'''
x_train, x_test, y_train, y_test = train_test_split(x, y)
# 文本向量化处理
from sklearn.feature_extraction.text import TfidfVectorizervect = TfidfVectorizer(ngram_range=(1, 3), stop_words='english', min_df=3)
# 转换数据
x_train_vect = vect.fit_transform(x_train)
print(type(x_train_vect))
x_test_vect = vect.transform(x_test)# 5.文本分类的模型实现,模型训练太慢,注释掉了
# model=RandomForestClassifier()
# model.fit(x_train_vect,y_train)
# print(model.score(x_train_vect,y_train))
# print(model.score(x_test_vect,y_test))
# # 优化目标,抑制过拟合
# model2=RandomForestClassifier(n_estimators=500)
# model2.fit(x_train_vect,y_train)
# print(model2.score(x_train_vect,y_train))
# print(model.score(x_test_vect,y_test))
# from sklearn.model_selection import GridSearchCV
# param={
#     'max_depth':range(1,500,10),
#     'criterion':['gini','entropy']
# }
# grid_s=GridSearchCV(RandomForestClassifier(n_jobs=8),param_grid=param,cv=5)
# x_vect=vect.transform(x)
# grid_s.fit(x_vect,y)
# print(grid_s.best_score_)
# print(grid_s.best_params_)# 6.朴素贝叶斯算法解决文本分类实现
print('——————————————————————————以下为朴素贝叶斯算法——————————————————————————————')
from sklearn.naive_bayes import MultinomialNBmodel = MultinomialNB(alpha=0.0001)
model.fit(x_train_vect, y_train)
print('在训练集上得分')
print(model.score(x_train_vect, y_train))
print('在测试集上得分')
print(model.score(x_test_vect, y_test))
# 利用循环找到较好的参数取值
test_score = []
alpht_ = np.linspace(0.00001, 0.01, 100)
for a in alpht_:model = MultinomialNB(alpha=a)model.fit(x_train_vect, y_train)test_score.append(model.score(x_test_vect, y_test))
max_score = max(test_score)
print('最高得分为:', max_score)
index = test_score.index(max_score)
print('下标为:', index)
print('最佳参数为:', alpht_[index])# 7.模型的评价
from sklearn.metrics import classification_reportbest_alpha = alpht_[index]
model = MultinomialNB(alpha=best_alpha)
model.fit(x_train_vect, y_train)
pred = model.predict(x_test_vect)  # 进行预测
# print(pred)
import pprintprint(classification_report(y_test, pred))
# 还可以使用混淆矩阵
from sklearn.metrics import confusion_matrixcm = confusion_matrix(y_test, pred)
print(cm)
import matplotlib.pyplot as pltplt.matshow(cm)
plt.colorbar()
plt.show()

自然语言处理与模型评价相关推荐

  1. 机器学习中的模型评价、模型选择及算法选择

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 正确使用模型评估.模型选择和算法选择技术无论是对机器学习学术研究还是工业场景应用都至关重要.本文将对这三个任务的相关技术 ...

  2. 临床模型评价:C指数(C-Index)、校正曲线(Calibration plot)、决策分析曲线(Decision Curve Analysis, DCA)、NRI指数

    临床模型评价:C指数(C-Index).校正曲线(Calibration plot).决策分析曲线(Decision Curve Analysis, DCA).NRI指数 目录

  3. 机器学习第10天:模型评价方法及代码实现

    文章目录 一.分类评价指标 1.精确率(Precision) 2.召回率(Recall) 3.准确率(Accuracy) 4.F1_score 二.回归评价指标 1.平方根误差(RMSE) 2.均方误 ...

  4. Python机器学习---KNN模型评价、追求

    文章目录 1. KNN模型评价 1.1 计算效率低,耗费计算资源较大 1.2 抗噪性较弱,对噪声数据(异常值)较为敏感 1.3 模型不稳定,可重复性较弱 1.4要进行归化处理: 2.模型的追求 2.1 ...

  5. lasso模型交替方向matlab_TCGA系列学习笔记(7)建模及模型评价

    微信公众号:生信小知识 关注可了解更多的教程及单细胞知识.问题或建议,请公众号留言; TCGA系列学习笔记(7)建模及模型评价 内容目录 前言1. 背景知识1.1 Cox前提假设的验证1.2 lass ...

  6. statistic在c语言中的作用,模型评价除了C-statistic,还能用什么指标?

    原标题:模型评价除了C-statistic,还能用什么指标? 前言 近日有朋友在<统计咨询>公众号咨询:评价预测模型时,除了C-statistic,还能用什么指标?小编的第一反应是可用的指 ...

  7. stats | 线性回归(四)——显著性检验和模型评价

    本篇介绍线性回归的显著性检验和评价方法.示例数据同上篇: DATA <- mtcars[, c("mpg", "wt", "qsec" ...

  8. GPT-J 自然语言处理 AI 模型

    GPT-J 是一个基于 GPT-3,由 60 亿个参数组成的自然语言处理 AI 模型.该模型在一个 800GB 的开源文本数据集上进行训练,并且能够与类似规模的 GPT-3 模型相媲美 2020 年, ...

  9. 泰坦尼克号乘客生存情况预测分析之第三部分建模及模型评价

    第三部分建模及模型评价 前面两部分我们已经对泰坦尼克号的数据进行了一些处理,感兴趣的小伙伴可以看看前面两篇文章,本篇主要介绍预测分析的第三部分,也就是建模和模型评价.数据处理完了,接下来就来看看在默认 ...

最新文章

  1. WordPress标签
  2. 多种脚本语言生成九九乘法口诀表
  3. 小爱音响调用php接口_PHP调用语音合成接口
  4. 物理层传输介质(双绞线、光纤等)
  5. Apache Qpid Proton 0.16.0,轻量通信库
  6. LibSass 的二进制文件(P:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\vendor\win32-ia32
  7. matlab浮点转定点的函数,FPGA基础知识17(Matlab中滤波器的定点化 浮点运算转换为定点运算)...
  8. asp中的session使用方法详解
  9. 电路 常见的数据线接口
  10. 计算机c盘 用户,如何转移Windows 7系统C盘的用户文件夹
  11. 什么是gc和gc的工作原理
  12. CDH踩坑记录之:熵不足
  13. Machine Learning读书会·北京今日启动(第3期周爱民、张帆)
  14. UE4C++开发学习笔记(01)——创建一个能操控的Character
  15. MySQL数据库 1067号错误的解决办法
  16. 高德地图海量点 API 初探
  17. 基于Yocto的qmake编译环境默认QMAKE_SPEC不是linux-oe-g++的问题
  18. oracle数据库报错:ORA-01654: 索引 aaa 无法通过 128 (在表空间 bb 中) 扩展
  19. python socket 域名_Python网络编程中的套接字名和DNS解析。
  20. GBase 8d条目添加到模板

热门文章

  1. Mac上的QQ字体大小和颜色设置
  2. 股票期货盈亏比的计算,胜率与盈亏比的关系
  3. Xposed模块开发
  4. 怎么卸载虚幻4_专访Epic Games:虚幻引擎5离手游近在咫尺,中小团队也能很快上手...
  5. [转贴]民国记者有多牛:揭黑损人骂街是常事
  6. Attention中的Q、K、V
  7. NX二次开发-UFUN获取part的单位(公制/英制)UF_PART_ask_units
  8. restTemplate访问接口
  9. 利用代码实现山脊线、山谷线的提取(arcpy版)
  10. 我自己制作的导航页网站,源码免费分享~