文本数据模型

在这里插入图片描述

from sklearn.feature_extraction.text import TfidfVectorizer

tfidf = TfidfVectorizer(stop_words=stopWord_list, min_df=40, max_df=0.3)
train_df.columns = ["类别""文章"]

# print('词表大小:', len(tfidf.vocabulary_))      #量化的维数,即特征的维数
# X = tfidf.fit_transform(train_df['文章']) 
X = tfidf.fit_transform(document) 
# 调用TfidfVectorizer对象的fit_transform方法,获得特征矩阵,赋值给X
print(X.shape)                                   #查看特征矩阵的形状

在这里插入图片描述

标签编码:

train_df['分类'].value_counts()

在这里插入图片描述

对这些用label encoder

#调用sklearn.preprocessing库的LabelEncoder方法对文章分类做标签编码
from sklearn.preprocessing import LabelEncoder

labelEncoder = LabelEncoder()

y = labelEncoder.fit_transform(train_df['分类'])
y.shape

在这里插入图片描述
在这里插入图片描述

from collections import Counter
Counter(y)

在这里插入图片描述

逻辑回归解决多分类问题:

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.2, random_state=2)

logistic_model = LogisticRegression(multi_class='multinomial', solver='lbfgs', random_state=2)
# 使用逻辑回归,设置multi_class='multinomial',处理多分类问题
# MvM则相对复杂,这里举MvM的特例one-vs-one(OvO)作讲解。
#如果模型有T类,我们每次在所有的T类样本里面选择两类样本出来,不妨记为T1类和T2类,
#把所有的输出为T1和T2的样本放在一起,把T1作为正例,T2作为负例,进行二元逻辑回归,得到模型参数。一共需要T(T-1)/2次分类。 

logistic_model.fit(train_X, train_y)
logistic_model.score(test_X, test_y)

在这里插入图片描述

保存模型

在这里插入图片描述

import pickle

with open('3.0tfidf.model', 'wb') as file:
    save = {
        'labelEncoder' : labelEncoder,
        'tfidfVectorizer' : tfidf,
        'logistic_model' : logistic_model
    }
    pickle.dump(save, file)

交叉验证:

在这里插入图片描述

import pickle

with open('3.0tfidf.model', 'rb') as file:
    tfidf_model = pickle.load(file)
    tfidfVectorizer = tfidf_model['tfidfVectorizer']
    labelEncoder = tfidf_model['labelEncoder']
    logistic_model = tfidf_model['logistic_model']
X = tfidfVectorizer.transform(document)
y = labelEncoder.transform(train_df['分类'])

简单交叉验证:

在这里插入图片描述

K 折交叉验证:

**在这里插入图片描述**
在这里插入图片描述

交叉验证:

在这里插入图片描述
在这里插入图片描述

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import ShuffleSplit
from sklearn.model_selection import cross_val_score

logistic_model = LogisticRegression(multi_class='multinomial', solver='lbfgs', random_state=2)
cv_split = ShuffleSplit(n_splits=5, test_size=0.2, random_state=2)    
# ShuffleSplit把数据集分成n份,取test_size份作为测试集,train_size份作为训练集。

score_ndarray = cross_val_score(logistic_model, X, y, cv=cv_split)
print(score_ndarray)
print(score_ndarray.mean())

逻辑回归交叉验证法

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值