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