【问题标题】:Sample k-fold cross validation in PythonPython 中的示例 k 折交叉验证
【发布时间】:2018-02-26 11:26:31
【问题描述】:

我想在 Python 中测试 k-fold (k=3) 交叉验证

我从网上得到这个代码

import nltk # needed for Naive-Bayes
import numpy as np
from sklearn.model_selection import KFold

# data is an array with our already pre-processed dataset examples
kf = KFold(n_splits=3)
sum = 0
for train, test in kf.split(data):
    train_data = np.array(data)[train]
    test_data = np.array(data)[test]
    classifier = nltk.NaiveBayesClassifier.train(train_data)
    sum += nltk.classify.accuracy(classifier, test_data)
average = sum/3

并添加:

data = [10, 20, 30, 40, 50]

错误结果:

Traceback (most recent call last):
  File "/Users/david/PycharmProjects/iranian-01/pandas_test.py", line 12, in <module>
classifier = nltk.NaiveBayesClassifier.train(train_data)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/nltk/classify/naivebayes.py", line 194, in train
for featureset, label in labeled_featuresets:
TypeError: 'numpy.int64' object is not iterable

请帮我解决这个问题

【问题讨论】:

  • data 是一个数组,你把它改成了一个元组。为什么?
  • ٍ修改为:data = [10, 20, 30, 40, 50]
  • 但我还是有错误
  • 你可以改正吗?
  • 你的数据是一个 1x5 数组。你需要一个 nsamples x ndimensions 矩阵

标签: python scikit-learn cross-validation


【解决方案1】:

您应该在训练和测试之前拟合您的数据。 即您将对这些数据进行 3 折交叉验证

data = [10, 20, 30, 40, 50]

所以,编译器拆分时结果将是一个浮点数。 我建议您使用 numpy 而不是 Python 纯数组,以便能够使用此库中的预定义函数。

【讨论】:

    猜你喜欢
    • 2017-07-02
    • 2016-01-15
    • 2016-12-15
    • 2018-08-29
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    相关资源
    最近更新 更多