ML之NB、LoR:基于NB和LoR算法对Kaggle IMDB影评数据集(国外类似豆瓣电影)情感分析进行分类


大叔过时
大叔过时 2022-09-19 13:35:42 52526
分类专栏: 资讯

ML之NB、LoR:基于NB和LoR算法对Kaggle IMDB影评数据集(国外类似豆瓣电影)情感分析进行分类

注:LoR code waiting

目录

输出结果

核心代码


 

输出结果

数据集Dataset之IMDB影评数据集:IMDB影评数据集的简介、下载、使用方法之详细攻略

核心代码

  1. 1、读取数据并做一些基本的预处理(比如说把评论部分的html标签去掉等等)
  2. def review_to_wordlist(review):
  3. '''
  4. 把IMDB的评论转成词序列
  5. '''
  6. review_text = BeautifulSoup(review,"lxml").get_text() 去掉HTML标签,拿到内容
  7. review_text = re.sub("[^a-zA-Z]"," ", review_text) 用正则表达式取出符合规范的部分
  8. words = review_text.lower().split() 小写化所有的词,并转成词list
  9. return words 返回words
  10. 使用pandas读入训练和测试csv文件
  11. train = pd.read_csv('F:/File_Python/Resources/Kaggle Film critic emotion/labeledTrainData.tsv', header=0, delimiter="\t", quoting=3)
  12. test = pd.read_csv('F:/File_Python/Resources/Kaggle Film critic emotion/testData.tsv', header=0, delimiter="\t", quoting=3 )
  13. y_train = train['sentiment'] 取出情感标签,positive/褒 或者 negative/贬
  14. train_data = [] 将训练和测试数据都转成词list
  15. for i in range(0,len(train['review'])):
  16. train_data.append(" ".join(review_to_wordlist(train['review'][i])))
  17. test_data = []
  18. for i in range(0,len(test['review'])):
  19. test_data.append(" ".join(review_to_wordlist(test['review'][i])))
  20. print(train_data)
  21. print(y_train)
  22. 2、特征处理:从数据里面拿到有区分度的特征,采用TF-IDF向量方法
  23. from sklearn.feature_extraction.text import TfidfVectorizer as TFIV
  24. 初始化TFIV对象,去停用词,加2元语言模型
  25. tfv = TFIV(min_df=3, max_features=None, strip_accents='unicode', analyzer='word',token_pattern=r'\w{1,}', ngram_range=(1, 2), use_idf=1,smooth_idf=1,sublinear_tf=1, stop_words = 'english')
  26. X_all = train_data + test_data 合并训练和测试集以便进行TFIDF向量化操作
  27. len_train = len(train_data)
  28. tfv.fit(X_all)
  29. X_all = tfv.transform(X_all)
  30. X = X_all[:len_train] 恢复成训练集和测试集部分
  31. X_test = X_all[len_train:]
  32. 3、利用NB算法,多项式朴素贝叶斯
  33. from sklearn.naive_bayes import MultinomialNB as MNB
  34. model_NB = MNB()
  35. model_NB.fit(X, y_train) 特征数据直接灌进来
  36. MNB(alpha=1.0, class_prior=None, fit_prior=True)
  37. from sklearn.cross_validation import cross_val_score
  38. import numpy as np
  39. print ("多项式贝叶斯分类器20折交叉验证得分: ", np.mean(cross_val_score(model_NB, X, y_train, cv=20, scoring='roc_auc')))
  40. 4、利用LoR算法
  41. from sklearn.linear_model import LogisticRegression as LR
  42. from sklearn.grid_search import GridSearchCV
  43. 设定grid search的参数
  44. grid_values = {'C':[30]}
  45. 设定打分为roc_auc
  46. model_LR = GridSearchCV(LR(penalty = 'L2', dual = True, random_state = 0), grid_values, scoring = 'roc_auc', cv = 20)
  47. 数据灌进来
  48. model_LR.fit(X,y_train)
  49. 20折交叉验证,开始漫长的等待...
  50. GridSearchCV(cv=20, estimator=LogisticRegression(C=1.0, class_weight=None, dual=True,
  51. fit_intercept=True, intercept_scaling=1, penalty='L2', random_state=0, tol=0.0001),
  52. fit_params={}, iid=True, loss_func=None, n_jobs=1,
  53. param_grid={'C': [30]}, pre_dispatch='2*n_jobs', refit=True,
  54. score_func=None, scoring='roc_auc', verbose=0)
  55. 输出结果
  56. print (model_LR.grid_scores_)

相关文章推荐

NLP系列(4)_朴素贝叶斯实战与进阶

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=2696
赞同 0
评论 0 条
大叔过时L0
粉丝 0 发表 13 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2935
【软件正版化】软件正版化工作要点  2854
统信UOS试玩黑神话:悟空  2811
信刻光盘安全隔离与信息交换系统  2702
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1235
grub引导程序无法找到指定设备和分区  1205
点击报名 | 京东2025校招进校行程预告  162
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  160
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  156
金山办公2024算法挑战赛 | 报名截止日期更新  153
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!