#读芯术#第一次参加Kaggle竞赛,该怎么做?( 二 )
现在 , 数据集如下所示 。
本文插图
文本(尤其是推文)通常会包含很多特殊字符 , 但这些字符对机器学习算法来说不一定有意义 。 因此 , 笔者要采取的第一步就是删去这些字符 。 还将把所有单词变成小写 。
本文插图
自然语言工具包(NLTK)汇集了用于处理文本数据的python库和工具 , 点击此处访问完整文档 。 除了处理工具之外 , 自然语言工具包还拥有庞大的文本语料库和词汇资源 , 其中包括多种语言的全部停用词资源 。 该库将用来从数据集中删除停用词 。
自然语言工具包库可通过pip安装 。 安装完成后 , 需要导入语料库并下载停用词文件 。
本文插图
数据清洗干净后 , 还需要进行进一步的预处理才能用于机器学习算法 。
所有机器学习算法都使用数学计算映射特征中的模式(在本文的情况下是文本或单词)和目标变量 。 因此 , 为了执行计算 , 训练机器学习模型之前必须将文本转换为数字形式 。
该类型的预处理有多种方法 , 但笔者将举例使用scikit-learn库中的两种方法 。
该过程的第一步是将数据拆分为标记或单个单词 , 计算每个单词在文本中出现的频率 , 然后将这些计数表示为稀疏矩阵 。
CountVectoriser函数可实现此目的 。
下一步是对CountVectoriser产生的字数进行加权 。 采用该加权的目的是按比例减少文本中频繁出现单词的影响 , 这样 , 在模型训练过程中 , 不频繁出现或提供更多信息的单词会得到重视 。 TfidTransformer可执行此功能 。
机器学习管道
将所有预处理和模型拟合放入scikit-learn管道 , 看看模型的表现如何 。 第一次尝试 , 笔者使用的是线性支持向量机分类器(SGDClassifier)——公认的最佳文本分类算法之一 。
from sklearn.model_selectionimport train_test_splitX_train, X_test, y_train, y_test =train_test_split(data_clean['text'],data_clean['target'],random_state = 0)fromsklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.pipeline import Pipelinefrom sklearn.feature_extraction.text import CountVectorizerfrom sklearn.feature_extraction.text import TfidfTransformerfrom sklearn.linear_model import SGDClassifierpipeline_sgd = Pipeline([ ('vect', CountVectorizer), ('tfidf', TfidfTransformer), ('nb', SGDClassifier),])model = pipeline_sgd.fit(X_train, y_train)
推荐阅读
- 鲁信创投■60余家创投机构代表参加新能源与先进制造专场路演活动中国科协科学技术传播中心
- 『全市』莱芜区参加全市重点项目集中开工分会场活动
- 【在人群中寻找你】现跟男友参加真人秀节目秀恩爱,黄轩却单身至,她曾拒绝黄轩七次
- 『奇葩搞笑菌』搞笑gif动态图:这么皮的保安还是第一次见
- 砺剑堂■参加叙利亚战争,钢铁洪流的继承者:俄军T-90M坦克全面交付
- 云云琴:朱德逝世几小时后影响有多大看参加追悼会人物就懂了
- 「鞠婧祎第一次做导播频频出错内疚到哭泣」鞠婧祎第一次做导播频频出错内疚到哭泣 何老师暖心安慰
- 小悦爱搞笑▲我不同意,因为她家太有钱,开心笑话:第一次有媒人主动上门提亲
- 『互联网快报』SKG大厂出品,年轻人第一次按摩颈椎,小米上线颈椎仪
- [晶用军事]德国一战的攻城重炮兴衰史,“大贝莎”
