- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如何在 scikit learn 中使用 FeatureUnion,以便 Gridsearch 可以选择性地处理其部分?
下面的代码有效并设置了一个 FeatureUnion,其中一个 TfidfVectorizer 用于单词,一个 TfidfVectorizer 用于字符。
在进行 Gridsearch 时,除了测试定义的参数空间外,我还想只测试“vect__wordvect”及其 ngram_range 参数(没有用于字符的 TfidfVectorizer),并且也只测试“vect__lettervect”小写参数 True 和 False,另一个 TfidfVectorizer 被禁用。
编辑:基于 maxymoo 建议的完整代码示例。
如何做到这一点?
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.grid_search import GridSearchCV
from sklearn.datasets import fetch_20newsgroups
# setup the featureunion
wordvect = TfidfVectorizer(analyzer='word')
lettervect = CountVectorizer(analyzer='char')
featureunionvect = FeatureUnion([("lettervect", lettervect), ("wordvect", wordvect)])
# setup the pipeline
classifier = LogisticRegression(class_weight='balanced')
pipeline = Pipeline([('vect', featureunionvect), ('classifier', classifier)])
# gridsearch parameters
parameters = {
'vect__wordvect__ngram_range': [(1, 1), (1, 2)], # commenting out these two lines
'vect__lettervect__lowercase': [True, False], # runs, but there is no parameterization anymore
'vect__transformer_list': [[('wordvect', wordvect)],
[('lettervect', lettervect)],
[('wordvect', wordvect), ('lettervect', lettervect)]]}
gs_clf = GridSearchCV(pipeline, parameters)
# data
newsgroups_train = fetch_20newsgroups(subset='train', categories=['alt.atheism', 'sci.space'])
# gridsearch CV
gs_clf = GridSearchCV(pipeline, parameters)
gs_clf = gs_clf.fit(newsgroups_train.data, newsgroups_train.target)
for score in gs_clf.grid_scores_:
print "gridsearch scores: ", score
最佳答案
FeatureUnion
有一个名为 transformer_list
的参数,您可以使用它进行网格搜索;所以在你的情况下你的网格搜索参数将变成
parameters = {'vect__wordvect__ngram_range': [(1, 1), (1, 2)],
'vect__lettervect__lowercase': [True, False],
'vect__transformer_weights': [{"lettervect":1,"wordvect":0},
{"lettervect":0,"wordvect":1},
{"lettervect":1,"wordvect":1}]}
关于python - scikit-learn FeatureUnion 网格搜索特征子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37038394/
在下面的代码中,我使用高音扬声器数据集来执行情感分析。我使用执行以下过程的管道: 1) 执行一些基本的文本预处理 2) 向量化推文文本 3) 添加一个额外的特征(文本长度) 4)分类 我想再添加一项功
我有以下数据框: ID Text 1 qwerty 2 asdfgh 我正在尝试为 Text 字段创建 md5 哈希,并从上面的数据框中删除 ID 字段。为了实现这一点,我创建了一个简单的 pip
我正在学习 pandas 中的管道和特征联合。我了解管道的工作原理,它有助于对给定数据集应用一系列转换。但是,我对特征联合感到困惑。我读过 docs它说变压器是并行应用的,然后将结果连接起来。 我对此
我正在学习 pandas 中的管道和特征联合。我了解管道的工作原理,它有助于对给定数据集应用一系列转换。但是,我对特征联合感到困惑。我读过 docs它说变压器是并行应用的,然后将结果连接起来。 我对此
sklearn 中的 FeatureUnion() 和 ColumnTransformer() 有什么区别? 如果我想构建一个包含混合数据类型(分类、数字、非结构化文本)的特征的监督模型,我应该使用哪
我正在对文本数据执行多标签分类。我希望使用 tfidf 的组合功能和类似于示例 here 的自定义语言功能使用FeatureUnion 。 我已经生成了自定义语言特征,它们采用字典的形式,其中键代表标
我正在尝试连接 tfidf 的特征和其他分类特征,以对结果数据集执行分类。从各种博客中我了解到,FeatureUnion 可用于连接特征,然后将其管道化到算法(在我的例子中为朴素贝叶斯)。 我已按照此
python 和 sklearn 的新手,所以提前致歉。我有两个变压器,我想将结果收集到一个 FeatureUnion 中(用于最后的建模步骤)。这应该非常简单,但 FeatureUnion 正在堆叠
我不断收到 IndexError:仅整数、切片 (:)、省略号 (...)、numpy.newaxis (None)整数或 bool 数组是有效索引 同时尝试将我的数据框适合以下管道。训练和测试是两个
如何在 scikit learn 中使用 FeatureUnion,以便 Gridsearch 可以选择性地处理其部分? 下面的代码有效并设置了一个 FeatureUnion,其中一个 TfidfVe
这是我的第一篇文章。我一直在尝试将功能与 FeatureUnion 和 Pipeline 结合起来,但是当我添加 tf-idf + svd piepline 时,测试失败并出现“维度不匹配”错误。我的
我苦苦挣扎,但仍然无法弄清楚如何在 scikit-learn 管道中使用 FeatureUnion 的文本特征和额外的特征。 我有一个句子列表及其标签来训练模型和一个句子列表作为测试数据。然后我尝试向
我正在尝试使用 FeatureUnion 从数据结构中提取不同的特征,但由于维度不同而失败:ValueError: blocks[0,:] has incompatible row dimension
我已经在 Internet 上多次看到这个主题,但从未见过一个完整、全面的解决方案,它可以适用于当前库版本的 sklearn 的所有用例。有人可以尝试使用以下示例解释如何实现吗? In this ex
如果我将 FeatureUnion 的 Transformer_weights 设置为 0 会发生什么?我想知道我是否可以使用这种方法来选择退出 GridSearchCV 中的一组功能。通过这种方式,
我开发了一个用于多标签分类的文本模型。 OneVsRestClassifier LinearSVC 模型使用 sklearns Pipeline 和 FeatureUnion 进行模型准备。 主要输入
使用时 this作为垃圾邮件分类的模型,我想添加主题和正文的附加功能。 我在 Pandas 数据框中拥有我的所有功能。例如,主题是 df['Subject'],正文是 df['body_text'],
我是一名优秀的程序员,十分优秀!