训练有素的模型可得出相同测试数据的不同结果

时间:2019-03-26 12:24:28

标签: python machine-learning tf-idf ensemble-learning tfidfvectorizer

我们已经在python中使用joblib加载了经过训练的模型,并给出了不同大小的测试集作为预测的输入。例如。我们将测试集命名为S1,S2,其中S1有100个实例,S2有1000个实例。实例“ X”是S1和S2的一部分,当使用经过训练的模型进行测试时,对它们的预测是不同的。我们在数据集上应用了TF-IDF算法以获得特征向量。训练过的模型的TF-IDF矢量化器词汇被保存为pickle文件,该文件进一步用于转换测试数据。如果有人可以提出建议或提供解决方案,那将有很大帮助。

实际: X属于C1类

预测结果: X属于C1 w.r.t S1;  X属于C2 w.r.t S2

1 个答案:

答案 0 :(得分:0)

您需要使用以下功能。

   random.seed() #or below if you are splitting
   X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.1, stratify = Y, random_state=1) 
   # here random_state=1 makes sure you get same results every time
顾名思义,

random_state用于初始化内部随机数生成器,该生成器将根据您的情况决定将数据拆分为训练索引和测试索引。在文档中指出:

由于您没有提供太多信息,所以这里有一个链接

reproducible-results-neural-networks-keras

为random.seed()添加了一个示例

import random
random.seed( 3 )
print "Random number with seed 3 : ", random.random() #will generate 
a random number 
#if you want to use the same random number once again in your program
random.seed( 3 )
random.random()   # same random number as before