python tfidf特征变换_机器学习的“万能模板” - 数据分析

最后是文本变量。很遗憾Titanic数据集中没有合适的文本变量。一般我们处理文本变量的方法是,合并所有的文本形成一个变量,然后调用Count Vectorizer或者TfidfVectorizer算法,将文本数据转换成数字。

大部分情况下,TfidfVectorizer比CountVectorizer表现更好;而且,下面一组参数几乎任何时候都有效。

如果你只在训练集上使用这些文本向量,请把它们保存到磁盘,以便在验证集上继续使用。

3. 正则化特征,特征选择

然后,我们来到了栈模块(stack module),这里的栈不是模型栈而是特征栈。在经过上一步的处理后,我们得到了不同的特征。

根据你得到的是稠密特征还是稀疏特征,你可以使用numpy模块的hstack或者sparse hstack把所有特征存进一个栈。

如果还有其他处理过程,比如PCA或者特征选择,我们还可以使用FeatureUnion模块。本文后面会继续提到分解和特征选择。

有了上面的特征,我们就可以开始应用机器学习模型了。现阶段,你只需要考虑基于树的模型就足够了。这些模型包括:

随机森林分类器 RandomForestClassifier

随机森林回归器 RandomForestRegressor

ExtraTreesClassifier

ExtraTreesRegressor

XGBClassifier

XGBRegressor

在直接使用上面的特征之前,首先需要进行正则化。对于使用线性模型而言,我们可以选择scikit-learn中的Normalizer或者StandardScaler。这些正则方法只针对稠密特征有效,在稀疏特征上不会给出好的结果。

假如上面的过程得到了一个“好的”模型,那我们可以继续优化超参数;假如没有得到

“足够好的”模型,我们可以通过下面的方法继续优化模型。

下一步包含分解方法:

PCA

为了简单起见,我们不谈LDA和QDA变换。对高维数据,一般采用PCA算法分解数据。对图片数据,我们从10-15个components开始逐渐增加,直到结果质量充分提高;对其他类型数据,我们初始选择50-60个components。

SVD

对于文本数据,在文本转换成稀疏矩阵后,使用奇异值分解(Singular Value Decomposition, SVD)转换数据。Scikit-learn提供了一份SVD的变种算法TruncatedSVD。

对于TF-IDF或者count向量化方法,SVD的components个数选择120-200之间一般是有效果的。更高的components个数会提高效果,但也需要更高的计算代价。

贪心特征选择

有多种方法达到特征选择的目的,其中最常见的一个是贪心特征选择(向前或向后)。在贪心特征选择中,我们选择一个特征,训练一个模型,然后在一项固定的指标上评估模型表现。然后我们一个一个地添加或者删除特征,记录每一步中模型的表现。最后选择让模型表现最好的特征集。贪心特征选择的一种实现,可以参考这里

Gradient Boosting Machine

特征选择还可以通过Gradient Boosting Machine达到。推荐使用xgboost代替scikit-learn中的GBM实现,因为xgboost更快而且更加具有可伸缩性。

4. 模型选择,超参数优化

我们一般采用下面的算法选择机器学习模型:

分类

随机森林 Random Forest

GBM

逻辑回归 Logistic Regression

朴素贝叶斯 Naive Bayes

支持向量机 Support Vector Machine

k近邻 k-Nearest Neighbors

回归

随机森林 Random Forest

GBM

线性回归 Linear Regression

岭回归 Ridge

Lasso

SVR

下面是作者给出他建议的模型和相对应的经验参数值,参数的选择经过时间和数据的积累。作者号称,上面的模型和参数组合已经超过了其他所有的模型。

5. 保存转换器

最后,记得保存转换器,在验证集应用训练出的模型。

三、总结

1.识别问题的类型,数据分割成两部分:训练集,验证集

2.识别数据中的变量,形成特征

3.正则化征,选择特征

4.选择模型,优化超参数

5.保存转换器

作者:renqHIT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python实现哈希表

# python 实现哈希表class HashTable:"""哈希函数的构造解决冲突"""def __init__(self, source):self.source sourceself._index []self._val []self.table []self._mod 13def Output(self):print(self._index)print(self._val)def _create…

商品综合评价排名

店内有很多产品,而且包含但不局限于以下指标:浏览量、访客数、平均停留时长、详情页跳出率、下单转化率、下单支付转化率、支付转化率、下单金额、下单商品件数、下单买家数、支付金额、支付商品件数、加购件数、访客平均价值、收藏人数、客单价、搜索支…

ionic资源网站

http://ionichina.com/topic/570b1f4ecd63e4247a7cfcf3 http://doc.ionicmaterialdesign.com/#intro http://ionicmaterial.com/demo/ 10大materialhttp://www.open-open.com/news/view/192f93e转载于:https://www.cnblogs.com/znsongshu/p/6079357.html

pytorch神经网络因素预测_实战:使用PyTorch构建神经网络进行房价预测

微信公号:ilulaoshi / 个人网站:lulaoshi.info本文将学习一下如何使用PyTorch创建一个前馈神经网络(或者叫做多层感知机,Multiple-Layer Perceptron,MLP),文中会使用PyTorch提供的自动求导功能,训练一个神经…

SQL基本操作

SQL 操作 检索数据 SELECT 检索数据 -- 检索单个列 SELECT 列名 FROM table_name;-- 检索多个列 SELECT 列1, 列2 FROM table_name;-- 检索所有列 SELECT * FROM table_name;-- 检索不同的值 SELECT DISTINCT 列名 FROM table_name;限制检索结果 -- SQL Server / Access SE…

git 忽略 部分文件夹_git提交忽略某些文件或文件夹

记得第一次用 github 提交代码,node_modules 目录死活传不上去,哈哈哈,后来才知道在 .gitignore 文件里设置了忽略 node_modules 目录上传。是的, .gitignore 文件就是设置那些你不想用 git 一起上传的文件和文件夹。比如刚接触到…

Ajax实现原理详解

Ajax:Asynchronous javascript and xml,实现了客户端与服务器进行数据交流过程。使用技术的好处是:不用页面刷新,并且在等待页面传输数据的同时可以进行其他操作。 这就是异步调用的很好体现。首先得了解什么是异步和同步的概念。…

SpringJDBC解析3-回调函数(update为例)

PreparedStatementCallback作为一个接口,其中只有一个函数doInPrepatedStatement,这个函数是用于调用通用方法execute的时候无法处理的一些个性化处理方法,在update中的函数实现: protected int update(final PreparedStatementCr…

python上下文管理器

DAY 23. python上下文管理器 Python 的 with 语句支持通过上下文管理器所定义的运行时上下文这一概念。 此对象的实现使用了一对专门方法,允许用户自定义类来定义运行时上下文,在语句体被执行前进入该上下文,并在语句执行完毕时退出该上下文&…

勾股定理python思路_趣叮咚编程数学揭秘:为什么勾股定理a+b=c?

我们都知道:三角形3个外角之和360度可是谁知道为什么等于360度呢?其实利用编程制作动图演绎了解啦:那勾股定理abc又是为什么呢?还有很多有趣的数学公式都可以演绎:圆的面积公式、圆周长...通过动图演绎原来晦涩难懂的定…

System.InvalidOperationException : 不应有 Response xmlns=''。

xml如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <Response version"2"><datacash_reference>4700203048783633</datacash_reference><information>Failed to identify the card scheme of the supp…

Navicat Premium连接SQL Server

Navicat Premium连接SQL Server 步骤&#xff1a; 激活SQL Server 服务配置SQL Server网络配置连接SQL Server 激活SQLServer服务 直接搜索 计算机管理 点 服务和应用程序&#xff0c; 点 SQL Server配置管理器&#xff0c; 双击第一个SQL Server服务 不出意外的话&#xf…

mysql 单标递归_MySql8 WITH RECURSIVE递归查询父子集的方法

背景开发过程中遇到类似评论的功能是&#xff0c;需要时用查询所有评论的子集。不同数据库中实现方式也不同&#xff0c;本文使用Mysql数据库&#xff0c;版本为8.0Oracle数据库中可使用START [Param] CONNECT BY PRIORMysql 中需要使用 WITH RECURSIVE需求找到name为张三的孩子…

processon完全装逼指南

一、引言 作为一名IT从业者&#xff0c;不仅要有扎实的知识储备&#xff0c;出色的业务能力&#xff0c;还需要具备一定的软实力。软实力体现在具体事务的处理能力&#xff0c;包括沟通&#xff0c;协作&#xff0c;团队领导&#xff0c;问题的解决方案等&#xff0c;这些能力在…

mysql在空闲8小时之后会断开连接(默认情况)

调试程序的过程发现&#xff0c;在mysql连接空闲一定时间&#xff08;默认8小时&#xff09;之后会断开连接&#xff0c;需要重新连接&#xff0c;也引发我对重连机制的思考。转载于:https://www.cnblogs.com/ppzbty/p/5707576.html

selector多路复用_多路复用器Selector

Unix系统有五种IO模型分别是阻塞IO(blocking IO)&#xff0c;非阻塞IO( non-blocking IO)&#xff0c;IO多路复用(IO multiplexing)&#xff0c;信号驱动(SIGIO/Signal IO)和异步IO(Asynchronous IO)。而IO多路复用通常有select&#xff0c;poll&#xff0c;epoll&#xff0c;k…

解决svn log显示no author,no date的方法之一

只要把svnserve.conf中的anon-access read 的read 改为none&#xff0c;也不需要重启svnserve就行 sh-4.1# grep "none" /var/www/html/svn/pro/conf/svnserve.conf ### and "none". The sample settings below are the defaults. anon-access none转载…

REST framework 权限管理源码分析

REST framework 权限管理源码分析 同认证一样&#xff0c;dispatch()作为入口&#xff0c;从self.initial(request, *args, **kwargs)进入initial() def initial(self, request, *args, **kwargs):# .......# 用户认证self.perform_authentication(request)# 权限控制self.che…

解决larave-dompdf中文字体显示问题

0、使用MPDF dompdf个人感觉没有那么好用&#xff0c;最终的生产环境使用的是MPDF&#xff0c;github上有文档说明。如果你坚持使用&#xff0c;下面是解决办法。可以明确的说&#xff0c;中文乱码是可以解决的。 1、安装laravel-dompdf依赖。 Packagist&#xff1a;https://pa…

mfc程序转化为qt_小峰的QT学习笔记

我的专业是输电线路&#xff0c;上个学期&#xff0c;我们开了一门架空线路设计基础的课&#xff0c;当时有一个大作业是计算线路的比载&#xff0c;临界档距&#xff0c;弧垂最低点和安装曲线。恰逢一门结课考试结束&#xff0c;大作业ddl快到&#xff0c;我和另外两个同专业的…