sklearn使用之Pipeline、FeatureUnion、GridSearchCV代码示例

sklearn使用之Pipeline、FeatureUnion、GridSearchCV代码示例

示例一:使用pipeline串联处理操作、使用GridSearchCV搜索最佳参数组合

from sklearn.feature_extraction.text import CountVectorizer #计数矢量器
from sklearn.feature_extraction.text import TfidfVectorizer #Tf-idf矢量器
from sklearn.naive_bayes import MultinomialNB #多项式朴素贝叶斯
from sklearn.pipeline import Pipeline 
from sklearn.model_selection import GridSearchCV 

X = tweets['SentimentText']  #训练文本
y = tweets['Sentiment'] #文本标签

'''
示例: 使用CountVectorizer 和 MultinomialNB 对文本训练样本做分类预测
使用Pipeline和GrideSearchCV做流程处理和最佳参数搜索
'''

# 实例一个 pipeline
pipe = Pipeline([('vect', CountVectorizer()), ('classify', MultinomialNB())])
# 设置 pipeline 参数
pipe_params = {'vect__ngram_range':[(1, 1), (1, 2)],'vect__max_features':[1000, 10000], 'vect__stop_words':[None, 'english']}


# 实例一个 gridsearch 
grid = GridSearchCV(pipe, pipe_params) 
# 训练 gridsearch 
grid.fit(X, y)
#查看结果
print (grid.best_score_, grid.best_params_)

示例二:使用FeatureUnion合并特征

from sklearn.pipeline import FeatureUnion

#联合两个矢量器生成的特征
featurizer = FeatureUnion([('tfidf_vect', TfidfVectorizer()), ('count_vect',
CountVectorizer())])

#设置两个矢量器的参数
featurizer.set_params(tfidf_vect__max_features=100, count_vect__ngram_range=(1, 2),
count_vect__max_features=300)

#特征合并
_ = featurizer.fit_transform(X)
print (_.shape)

 

示例三:使用FeatureUnion合并特征、pipeline串联处理操作、GridSearchCV搜索最佳参数组合

#创建一个新的pipeline,串联起来特征生成和合并、分类模型训练
pipe = Pipeline([('featurizer', featurizer), ('classify', MultinomialNB())])

#设置参数范围
pipe_params = {
'featurizer__count_vect__ngram_range':[(1, 1), (1, 2)], 'featurizer__count_vect__max_features':[1000, 10000], 'featurizer__count_vect__stop_words':[None, 'english'],
'featurizer__tfidf_vect__ngram_range':[(1, 1), (1, 2)],
'featurizer__tfidf_vect__max_features':[1000, 10000],
'featurizer__tfidf_vect__stop_words':[None, 'english']
}

#网格搜索最佳参数组合
grid = GridSearchCV(pipe, pipe_params) 
grid.fit(X, y)
print (grid.best_score_, grid.best_params_)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值