700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 多项式朴素贝叶斯实现文本分类

多项式朴素贝叶斯实现文本分类

时间:2020-10-04 18:54:01

相关推荐

多项式朴素贝叶斯实现文本分类

我做了一个导航站(域名是挂路灯的全拼gualudeng),里面精选了各种影视,动漫,黑科技,实用工具,搞笑有趣的站点,动动大家可爱的小手,点进来看看吧,良心站点。

#coding=utf-8import numpy as npimport matplotlib.pyplot as pltimport matplotlib as mplfrom sklearn.naive_bayes import GaussianNB,MultinomialNBfrom sklearn.datasets import fetch_20newsgroupsfrom sklearn.model_selection import train_test_splitfrom sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.model_selection import GridSearchCVif __name__=='__main__':#加载文本分类数据#只选择4个类别进行分类#若分类所有类别,请注意内存是否够用categories = 'alt.atheism', 'talk.religion.misc', 'comp.graphics', 'sci.space'# remove = ('headers', 'footers', 'quotes')remove = ()data_train = fetch_20newsgroups(subset='train', categories=categories, shuffle=True, random_state=0, remove=remove)data_test = fetch_20newsgroups(subset='test', categories=categories, shuffle=True, random_state=0, remove=remove)y_train = data_train.targety_test = data_test.target#print u'数据类型:', type(data_train)print u'训练集包含的文本数目:', len(data_train.data)print u'测试集包含的文本数目:', len(data_test.data)#打印5个文本的详细信息'''for i in np.arange(5):print u'文本%d(属于类别 - %s):' % (i+1, categories[y_train[i]])print data_train.data[i]print '\n\n''''#文本特征tf-idf向量化vectorizer = TfidfVectorizer(input='content', stop_words='english', max_df=0.5, sublinear_tf=True)x_train = vectorizer.fit_transform(data_train.data) # x_train是稀疏的,scipy.sparse.csr.csr_matrixx_test = vectorizer.transform(data_test.data) #注意此处一定要用 transform 保证两个列表纵向维度一致 #print x_train.shape#print x_test.shapefeature_names = np.asarray(vectorizer.get_feature_names())#print feature_names#开始预测model = MultinomialNB()#需要交叉验证获取平滑系数#alpha = GridSearchCV(model,param_grid={"alpha":[0.001,0.01,0.1,1,10,100,1000]},cv=10)alpha.fit(x_train, y_train)#最佳参数为0.1#print alpha.best_params_#用测试数据,测试效果pre_y = alpha.predict(x_test)m=0for i in range(len(pre_y)):if pre_y[i]==y_test[i]:m=m+1print "准确率:",m*1.0/len(pre_y)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。