Python 3.x sklearn交叉验证分数为每个折叠次数提供相同的结果

Python 3.x sklearn交叉验证分数为每个折叠次数提供相同的结果,python-3.x,machine-learning,scikit-learn,Python 3.x,Machine Learning,Scikit Learn,我不明白为什么交叉验证总是给我相同的准确度(0.92),不管我使用多少次 即使我删除参数cv=10,它也会给出相同的结果 #read preprocessed data traindata = ast.literal_eval(open('pretprocesirano.txt').read()) testdata = ast.literal_eval(open('pretprocesiranoTEST.txt').read()) #create word vector vectorizer=

我不明白为什么交叉验证总是给我相同的准确度(0.92),不管我使用多少次

即使我删除参数cv=10,它也会给出相同的结果

#read preprocessed data
traindata = ast.literal_eval(open('pretprocesirano.txt').read())
testdata = ast.literal_eval(open('pretprocesiranoTEST.txt').read())

#create word vector
vectorizer= CountVectorizer(tokenizer=lambda x:x.split(), min_df=3, max_features=300)
traindataCV=vectorizer.fit_transform(traindata)

#save wordlist
wordlist=vectorizer.vocabulary_

#save vectorizer
SavedVectorizer = CountVectorizer(vocabulary=wordlist)

#transform test data
testdataCV=SavedVectorizer.transform(testdata)

#modeling-NaiveBayes  
clf = MultinomialNB()
clf.fit(traindataCV, label_train) 

#cross validation score
CrossValScore = cross_val_score(clf, traindataCV, label_train, cv=10)
print("Accuracy CrossValScore: %0.3f" %CrossValScore.mean())
我也尝试过这种方法,也得到了同样的结果(0.92)。即使我更改了折叠的数量或将其移除,也会发生这种情况

from sklearn.model_selection import KFold
CrossValScore = cross_val_score(clf, traindataCV, label_train, cv=KFold(10, shuffle=False, random_state=0))
print("Accuracy CrossValScore: %0.3f" %CrossValScore.mean())
以下是一些示例:

traindata= ['ucg investment bank studying unicredit intesa paschi merger sole', 'mtoken sredstva autentifikacije intesa line umesto mini cda cega line vise moze koristi aktivacija', 'pll intesa', 'intesa and unicredit banka asset management the leading italia lenders are both after more fee income but url', 'about write intesa scene colbie cailat fosterthepeople that involves sexy taj between these url']

testdata= ['naumovic samo privilegovani nije delatnosti moci imati hit nama traziti depozit rimuje mentionpositive', 'breaking unicredit board okays launch bad loans vehicle with intesa kkr read more url', 'postoji promocija kupovina telefon rate telefon banka popust pretplata url', 'direktor politike haha struja obecao stan svi zaposliti kredit komercijalna banka', 'forex update unicredit and intesa pool bln euros bad loans kkr vehicle url']

label_train=[0 1 0 0 0]
label_test=[1 0 1 1 0]

你能提供一些数据样本吗?是的,你现在可以在帖子中看到。啊,现在我更仔细地看一下你的代码。这是因为cv=someNumber仍将是一个KFold,且shuffle参数处于禁用状态。所以每次,它都会将数据分成同一列并进行测试。因此,无论您运行代码多少次,平均值总是相同的。仅当您将n_分割或cv更改为不同的数字时,它才会更改。如果您希望相同数目的分割得到不同的结果,请在KFold中使用shuffle=True并移除随机_状态,因为random_state也会修复种子,最终在每次运行代码时都会导致相同的折叠。另外,请查看您的
词汇表。它包含多少个值?