x_train, x_test, y_train, y_test train_test_split(news_list,news.target, test_size 0.1) # 划分数据 # 特征选择与提取 提取各种新闻的特征词汇 cv CountVectorizer() x_count_train cv.fit_transform(x_train) td TfidfTransformer() # 使用TF-IDF 词频、逆文档频率 应用于稀疏矩阵 train_td td.fit_transform(x_count_train) # 传入训练数据4. 构造分类器
训练模型或者构造新闻分类器 #实例化一个贝叶斯分类器 classifier MultinomialNB() #传入数据进行训练 classifier.fit(train_td, y_train)5. 通过相应的指标评价构造分类器的好坏
# 对文本数据进行标记并转换为稀疏计数矩阵 x_count_test cv.transform(x_test) # 使用测试数据进行预测 # 对文本数据进行标记并转换为稀疏矩阵 input_tfidf td.transform(x_count_test) #利用测试机数据进行模型测试 print(classifier.predict(input_tfidf)) print( 与真实值的误差 , r2_score(y_test,classifier.predict(input_tfidf))) [4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4] 与真实值的误差 -0.26502500235871307
这里由于样本较少和参数优化的原因导致误差值较大 如需测试请收集更多样本进行实验
6. 网格搜索方式设置分类器最优超参数。 网格搜索最优超参数
classfiter MultinomialNB() # 分类器
# 网格参数 这里的参数为分类器支持的参数
param_grid [
{ alpha : [1.0,2.0,3.0,4.0,5.0], fit_prior : [False]}
# 构造网格搜索分类器
grid_search GridSearchCV(classfiter,param_grid)
grid_search.fit(train_td,y_train) # 训练模型
best_params grid_search.best_params_ # 最优参数
best_estimator grid_search.best_estimator_ # 最优模型
print(best_params)
print(best_estimator)
{ alpha : 1.0, fit_prior : False}
MultinomialNB(fit_prior False)
点击下载源码
喜欢请点个赞



