Scikit 学习 SGDClassifier:精度和召回率每次都会改变值

Scikit learn SGDClassifier: precision and recall change the values each time

我对 scikit learn 中的精度和召回值有疑问。我正在使用函数 SGDClassifier 对我的数据进行分类。 为了评估性能,我使用了精度和召回函数 precision_recall_fscore_support 但每次我 运行 程序在精度和召回矩阵中都有不同的值。我怎样才能拥有真正的价值观? 我的代码是:

scalerI = preprocessing.StandardScaler()
X_train = scalerI.fit_transform(InputT)
X_test = scalerI.transform(InputCross)
clf = SGDClassifier(loss="log", penalty="elasticnet",n_iter=70)
y_rbf = clf.fit(X_train,TargetT)
y_hat=clf.predict(X_test)
a= clf.predict_proba(X_test)
p_and_rec=precision_recall_fscore_support(TargetCross,y_hat,beta=1)

谢谢

docs SGDClassifier 有一个初始化为 Nonerandom_state 参数,这是用于随机数生成器的种子值。您需要修复此值以便结果可重复,因此设置 random_state=0 或您想要的任何喜欢的数字

clf = SGDClassifier(loss="log", penalty="elasticnet",n_iter=70, random_state=0)

应该为每个 运行

产生相同的结果

来自文档:

random_state : int seed, RandomState instance, or None (default) The seed of the pseudo random number generator to use when shuffling the data.