【发布时间】:2020-06-27 04:32:52
【问题描述】:
我正在尝试了解 K 折交叉验证,因为我第一次将它用于我的文本分类。但是我对如何在 python 中实现它感到很困惑
我有一个数据框,其中data 是我要预测的文本,标签是预测值(0 或 1)。我目前使用训练测试拆分方法,并在矢量化数据上使用多项式 NB。
from sklearn import model_selection
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
# split the data into training and testing datasets
X_train, X_test, y_train, y_test = model_selection.train_test_split(df['data'], df['label'], random_state=1)
vect = CountVectorizer(ngram_range=(1,2), max_features=1000 , stop_words="english")
X_train_dtm = vect.fit_transform(X_train)
X_test_dtm = vect.transform(X_test)
nb = MultinomialNB()
nb.fit(X_train_dtm, y_train)
y_pred_class = nb.predict(X_test_dtm)
我只是想知道如何以类似的方式实现 5 折验证。我查看了很多示例,但对于如何以正确的方式进行操作感到很困惑,因为我是初学者。
【问题讨论】:
-
通过从“X_test_dtm”中选择随机样本而不是一次选择所有样本来找到“y_pred_class”的准确性。对该预测进行 5 次平均。平均预测是经过 k 倍交叉验证的训练模型的实际准确度,其中 k = 5
标签: python machine-learning scikit-learn