Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 tensorflow SKCompat与cross_val_分数不兼容_Python 2.7_Tensorflow_Scikit Learn - Fatal编程技术网

Python 2.7 tensorflow SKCompat与cross_val_分数不兼容

Python 2.7 tensorflow SKCompat与cross_val_分数不兼容,python-2.7,tensorflow,scikit-learn,Python 2.7,Tensorflow,Scikit Learn,我正在尝试使用一个tensorflow分类器和scikit learn中的一些工具,即模型选择.cross\u val\u score。当我运行以下代码(改编自)时,我得到一个TypeError(请参阅下面的完整回溯) 从我所能看出的问题是,cross\u val\u score试图通过执行相当于estimator的操作来克隆估计器。由于某种原因,SKCompat.get_params返回{},类上的init方法需要一个参数(如示例代码所示),因此操作会中断 我做错什么了吗?或者这是tensor

我正在尝试使用一个tensorflow分类器和scikit learn中的一些工具,即
模型选择.cross\u val\u score
。当我运行以下代码(改编自)时,我得到一个
TypeError
(请参阅下面的完整回溯)

从我所能看出的问题是,
cross\u val\u score
试图通过执行相当于
estimator的操作来克隆估计器。由于某种原因,
SKCompat.get_params
返回
{}
,类上的init方法需要一个参数(如示例代码所示),因此操作会中断

我做错什么了吗?或者这是tensorflow的一个bug

失败的例子 回溯
回溯(最近一次呼叫最后一次):
文件“iris.py”,第49行,在
tf.app.run()
文件“/Users/Matt/.virtualenvs/numerai/lib/python2.7/site packages/tensorflow/python/platform/app.py”,第48行,运行中
_系统出口(主(_sys.argv[:1]+标志_passthrough))
文件“iris.py”,第44行,主
评分(准确度)
文件“/Users/Matt/.virtualenvs/numerai/lib/python2.7/site packages/sklearn/model\u selection/\u validation.py”,第140行,交叉值
对于列车,在cv_iter中进行试验)
文件“/Users/Matt/.virtualenvs/numerai/lib/python2.7/site packages/sklearn/externals/joblib/parallel.py”,第758行,在调用中__
而self.dispatch\u一批(迭代器):
文件“/Users/Matt/.virtualenvs/numerai/lib/python2.7/site packages/sklearn/externals/joblib/parallel.py”,第603行,一批发送
tasks=BatchedCalls(itertools.islice(迭代器,批大小))
文件“/Users/Matt/.virtualenvs/numerai/lib/python2.7/site packages/sklearn/externals/joblib/parallel.py”,第127行,在__
self.items=列表(迭代器\u切片)
文件“/Users/Matt/.virtualenvs/numerai/lib/python2.7/site packages/sklearn/model\u selection/\u validation.py”,第140行,在
对于列车,在cv_iter中进行试验)
文件“/Users/Matt/.virtualenvs/numerai/lib/python2.7/site packages/sklearn/base.py”,第70行,克隆
新建对象=klass(**新建对象参数)
TypeError:\uuuu init\uuuuuu()正好接受2个参数(给定1个)
版本 python:2.7.3

tensorflow:1.1.0


scikit learn:0.18.1

此错误是因为cross_val_得分将在每次拟合之前克隆估计器,因此SKCompat的get_params()应返回正确的参数。但由于某些原因,它返回空参数,因此出现错误。@VivekKumar我认为你是对的。我的后续问题是:我是否错误地使用了该类,或者这是我应该向tensorflow提交的错误?我尝试过,但找不到使用scikit learn anywhere的SKCompat示例。因此,我无法对此发表评论。我认为你应该在他们的github页面上发布一个问题。如果不是一个bug,你会得到它的正确使用。
"""Example of DNNClassifier for Iris plant dataset."""

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function


from sklearn import metrics
from sklearn import model_selection

import tensorflow as tf


def main(unused_argv):
  # Load dataset.
  iris = tf.contrib.learn.datasets.load_dataset('iris')

  # Build 3 layer DNN with 10, 20, 10 units respectively.
  feature_columns = tf.contrib.learn.infer_real_valued_columns_from_input(
      iris.data)
  classifier = tf.contrib.learn.SKCompat(
    tf.contrib.learn.DNNClassifier(
      feature_columns=feature_columns,
      hidden_units=[10, 20, 10],
      n_classes=3
    )
  )

  # Fit and predict.
  scores = model_selection.cross_val_score(classifier, iris.data, iris.target,
          scoring='accuracy')
  print('Accuracy: {0:f}'.format(scores.mean()))


if __name__ == '__main__':
  tf.app.run()
Traceback (most recent call last):
  File "iris.py", line 49, in <module>
    tf.app.run()
  File "/Users/Matt/.virtualenvs/numerai/lib/python2.7/site-packages/tensorflow/python/platform/app.py", line 48, in run
    _sys.exit(main(_sys.argv[:1] + flags_passthrough))
  File "iris.py", line 44, in main
    scoring='accuracy')
  File "/Users/Matt/.virtualenvs/numerai/lib/python2.7/site-packages/sklearn/model_selection/_validation.py", line 140, in cross_val_score
    for train, test in cv_iter)
  File "/Users/Matt/.virtualenvs/numerai/lib/python2.7/site-packages/sklearn/externals/joblib/parallel.py", line 758, in __call__
    while self.dispatch_one_batch(iterator):
  File "/Users/Matt/.virtualenvs/numerai/lib/python2.7/site-packages/sklearn/externals/joblib/parallel.py", line 603, in dispatch_one_batch
    tasks = BatchedCalls(itertools.islice(iterator, batch_size))
  File "/Users/Matt/.virtualenvs/numerai/lib/python2.7/site-packages/sklearn/externals/joblib/parallel.py", line 127, in __init__
    self.items = list(iterator_slice)
  File "/Users/Matt/.virtualenvs/numerai/lib/python2.7/site-packages/sklearn/model_selection/_validation.py", line 140, in <genexpr>
    for train, test in cv_iter)
  File "/Users/Matt/.virtualenvs/numerai/lib/python2.7/site-packages/sklearn/base.py", line 70, in clone
    new_object = klass(**new_object_params)
TypeError: __init__() takes exactly 2 arguments (1 given)