机器学习支持向量机对新闻文本进行分类

数据集:sklearn的新闻抓取器fetch_20newsgroups
预处理:删除标点符号,对文本单词进行统计,统计出所有单词(去除重复的),然后将这些单词作为特征向量,将行数作为维度。

① :分割数据集,分为训练集和测试集
② :使用TfidfVectorizer(文本特征提取)对文本进行特征向量转化(将文本转化成多维度的特征向量)
③ :初始化SVC模型,用分割好的训练数据,训练SVC模型
④ :用训练好的模型,预测测试集
⑤ :用svc自带的评估来评估模型,用classification_report对预测结果(分类器性能)评估

from sklearn.datasets import fetch_20newsgroups
news = fetch_20newsgroups(subset='all')

from string import punctuation
table = str.maketrans(' ',' ',punctuation)
st = [w.translate(table) for w in news.data]
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(news.data,news.target,test_size=0.25,random_state=33,stratify=news.target)
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfVectorizer,TfidfTransformer
from sklearn.metrics import classification_report

#运用tfidf来特征向量化
tfidf_filter_vec=TfidfVectorizer(max_df=0.045,binary=True,stop_words='english',ngram_range=(1,2),smooth_idf=True,sublinear_tf=True)
X_tfidf_filter_train = tfidf_filter_vec.fit_transform(X_train)
X_tfidf_filter_test = tfidf_filter_vec.transform(X_test)

#svc
from sklearn.svm import LinearSVC
svc=LinearSVC()
svc.fit(X_tfidf_filter_train,y_train)
svc_pred = svc.predict(X_tfidf_filter_test)
print('svc',svc.score(X_tfidf_filter_test,y_test))

SVC模型最终测试结果为0.941213921901528,比课本上运用朴素贝叶斯进行分类的结果高4%

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值