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

本文介绍了如何使用Python中的TfidfVectorizer处理文本数据,强调TfidfVectorizer在特征变换中的重要性。文章涵盖了特征组合、正则化、特征选择、模型选择和超参数优化,并提供了随机森林、梯度提升等模型的使用建议。同时,作者提醒在模型训练后要保存转换器以应用于验证集。
摘要由CSDN通过智能技术生成

最后是文本变量。很遗憾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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值