【专利练习3】用传统机器学习方法进行专利分类(TFIDF+LR:DT:RF)

用传统机器学习方法进行专利分类(TFIDF+LR:DT:RF)

代码出自:https://github.com/newzhoujian/LCASPatentClassification/tree/master
本博客对该代码进行一个学习把并记录

数据预处理

好像只有去停用词以及一些格式转化,详见代码

训练tfidf模型

TfidfVectorizer可以把原始文本转化为tf-idf的特征矩阵
from sklearn.feature_extraction.text import TfidfVectorizer

\\   token_pattern这个参数使用正则表达式来分词,其默认参数为r"(?u)\b\w\w+\b",表示匹配长度至少为2的单词
tfidf_model = TfidfVectorizer(token_pattern=r"(?u)\b\w+\b").fit_transform(document)
\\ 得到稀疏矩阵表示的矩阵
print(tfidf_model)
\\ 转化为更直观的一般矩阵
print(tfidf_model.todense())

结果如下:

  (0, 7558)	0.02034730336798103 
 // 第0个字符串,对应词典序号为7558的词的TFIDF为0.02034730336798103 
  (0, 7158)	0.08233296734008405
  (0, 8008)	0.04609521656939313
  (0, 5965)	0.047696814786997874
  (0, 6668)	0.037570246489892836
  (0, 456)	0.017961627422006122
  (0, 105166)	0.030653691593477726
  (0, 5262)	0.06595886168755766

更多信息可以参考:https://blog.csdn.net/blmoistawinde/article/details/80816179

模型训练

// 划分训练集、测试集
X_train, X_test, y_train, y_test = train_test_split(tfidf_model, y, test_size=0.25, random_state=42)
// 模型训练
models = {}
models['LR'] = LogisticRegression()
models['LR'].fit(X_train[:], y_train[:])

models['DT'] = DecisionTreeClassifier()
models['DT'].fit(X_train[:], y_train[:])

models['RF'] = RandomForestClassifier()
models['RF'].fit(X_train[:], y_train[:])

这边 random_state 相当于随机数种子random.seed()
这里的random_state就是为了保证程序每次运行都分割一样的训练集和测试集
参考:https://www.jianshu.com/p/4deb2cb2502f

效果测评

for key in models.keys():
	y_pred = models[key].predict(X_test)
	print(key)
	
	print('macro_precision:\t',end='')
	print(metrics.precision_score(y_test, y_pred,average='macro'))

	print('macro_recall:\t\t',end='')
	print(metrics.recall_score(y_test, y_pred,average='macro'))

	print('macro_f1:\t\t',end='')
	print(metrics.f1_score(y_test, y_pred,average='macro'))

结果如下:

LR
macro_precision:	0.7766911245155266
macro_recall:		0.7750854458705632
macro_f1:		0.7750317914922913
DT
macro_precision:	0.5308533103981747
macro_recall:		0.5304569538998007
macro_f1:		0.5304636548464916
RF
macro_precision:	0.5499090577912552
macro_recall:		0.547657116077106
macro_f1:		0.5467089135105888

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值