002_文本分类任务的问答

1、下面代码中,random_state作为随机种子作用是什么?

train_x, valid_x, train_y, valid_y = model_selection.train_test_split(trainDF['text'], trainDF['label'], test_size=0.25, random_state=42)

这段代码的作用是随机把数据分为两个部分
计算机的“随机数”其实是 伪随机数,它们是由一个公式算出来的。第一次“随机”时,程序会用一个 起始值(种子 seed)之后根据一个确定的数学公式生成下一次“随机”的结果。如果种子相同,公式和初始值都一样,那么每次运行得到的随机数序列就一样。

此外test_size是表示验证集占整个数据的比例,而不是训练集,因为验证集相对于训练集来说比较小

2、解释代码

    encoder = preprocessing.LabelEncoder()
    train_y = encoder.fit_transform(train_y)
    valid_y = encoder.transform(valid_y)

第一行代码,encoder的作用是把分类标签(字符串或其他形式)映射成整数
第二行代码分为fit和transform两个过程,fit过程找出所有的label,并放入集合set,然后映射成词典,transform过程把label映射为数字,并对原label做替换
第三行代码只用transform,不再fit,是因为验证集要用和训练集相同的标签映射关系

3、说说TF-IDF,并解释代码

    tfidf_vect = TfidfVectorizer(analyzer='word', token_pattern=r'\w{1,}', max_features=5000)
    tfidf_vect.fit(trainDF['text'])
    xtrain_tfidf = tfidf_vect.transform(train_x)
    xvalid_tfidf = tfidf_vect.transform(valid_x)

TF-IDF: Term Frequency – Inverse Document Frequency (词频–逆文档频率)
主要作用是衡量一个词在一篇文档里有多重要

fit作用:这里传入的参数是文本(字符串)的列表,fit的作用是统计每个词出现在哪些文档,计算IDF值,并建立词表,决定哪些词被保留
transform:用fit建立的词表,把训练集文本转成TF-IDF特征矩阵

4、模型训练

# 3.训练朴素贝叶斯分类器
def train_model(classifier, feature_vector_train, label_train, feature_vector_valid, label_valid, is_neural_net=False):
    # 3.1. 训练模型
    classifier.fit(feature_vector_train, label_train)

    # 3.2. 预测验证集
    predictions = classifier.predict(feature_vector_valid)

    # 3.3. 如果是神经网络,取预测概率最大的类别
    if is_neural_net:
        predictions = predictions.argmax(axis=-1)   # argmax 返回最大值所在的索引
        # axis=-1 表示 沿最后一维 取最大值索引,也就是对每一行(每条样本)找到概率最大的类别索引

    # 3.4. 返回准确率
    return metrics.accuracy_score(label_valid, predictions)

训练模型说法太笼统了,有没有更详细的说法?
      训练模型就是执行所传入的深度学习算法,让模型从训练数据里学到规律,使它能预测未知数据的标签

posted @ 2025-09-17 18:15  徐徐丶  阅读(11)  评论(0)    收藏  举报