Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.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 在tf.contrib.learn.LinearClassifier.fit中传递什么作为x和y参数 问题:_Python_Pandas_Tensorflow - Fatal编程技术网

Python 在tf.contrib.learn.LinearClassifier.fit中传递什么作为x和y参数 问题:

Python 在tf.contrib.learn.LinearClassifier.fit中传递什么作为x和y参数 问题:,python,pandas,tensorflow,Python,Pandas,Tensorflow,我已经建立了一个玩具的例子。在本例中,使用参数input\u fn调用fit方法,其中我通过train\u input\u fn。这就是TensorFlow传递数据的方式。但是,我确实希望运行小批量。幸运的是,fit有一个batch\u size参数,但我需要放弃使用input\u fn,而是传递x和y。我试过传递ndarrays和DataFrames以及train\u input\u fn函数的输出。什么都不管用。我需要一个使用batch\u size参数的工作示例 安装程序 下面是我没有问题

我已经建立了一个玩具的例子。在本例中,使用参数
input\u fn
调用
fit
方法,其中我通过
train\u input\u fn
。这就是TensorFlow传递数据的方式。但是,我确实希望运行小批量。幸运的是,
fit
有一个
batch\u size
参数,但我需要放弃使用
input\u fn
,而是传递
x
y
。我试过传递
ndarray
s和
DataFrames
以及
train\u input\u fn
函数的输出。什么都不管用。我需要一个使用
batch\u size
参数的工作示例

安装程序 下面是我没有问题的设置代码,后面是问题部分

没有问题(可以随意复制/粘贴/运行) 问题部分工作版本 问题部分非工作版本 下面是我得到的错误,但根据我的尝试,我得到了不同的错误。文件上说是矩阵。我也试过了

整个回溯的转储
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
12 p.fit(输入fn=序列输入fn,步数=10)
13 x,y=列车输入
--->14 p.配合(x=df_系列,y=df_系列,步数=10,批量尺寸=100)
15结果=p.评估(输入=评估输入=步骤1)
16对于已排序的输入(结果):
/Users/sean/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimators.pyc(self、x、y、input\fn、steps、batch\u size、monitors)
171如果x为无:
172 raise VALUE ERROR('必须提供x或input_fn')
-->173输入\u fn,输入\u fn=\u获取\u输入\u fn(x,y,批次大小)
174 elif(x不是无)或(y不是无):
175 raise VALUE ERROR('不能同时提供输入和x和y.)
/Users/sean/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.pyc in_get\u input_fn(x,y,批量大小)
65定义获取输入(x、y、批次大小):
66 df=数据馈线。设置列车数据馈线(
--->67 x,y,n_类=无,批量大小=批量大小)
68返回df.input\u builder,df.get\u feed\u dict\u fn()
69
/用户/sean/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/io/data\u feeder.pyc在设置\u train\u data\u feeder中(X、y、n类、批量大小、无序、时代)
97 ValueError:如果'X'和'y'中的一个是可写的,而另一个不是。
98   """
--->99 X,y=\u数据类型\u过滤器(X,y)
100如果有以下情况:
101#pylint:disable=g-import-not-at-top
/Users/sean/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/io/data\u feeder.pyc in_data\u type\u filter(X,y)
65 y=提取标签(y)
66如果有熊猫:
--->67 X=提取数据(X)
68如果y不是无:
69 y=提取标签(y)
/提取熊猫数据(数据)中的Users/sean/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/io/pandas\u io.pyc
51返回数据.values.astype('float'))
52.其他:
--->53 raise VALUERROR('数据的数据类型必须是int、float或bool')
54
55
ValueError:数据的数据类型必须为int、float或bool。

如果您通过
x
y
的格式似乎与
input\u fn
的格式不同。引用
fit
的:

x:矩阵或形状张量[n_样本,n_特征…]。可以是返回特征数组的迭代器。用于拟合模型的训练输入样本。如果设置,则输入必须为无

下面的例子是有效的

  • 我不得不用布尔值代替
    'Yes'
    /
    'No'
    (这可能不是等价的,但说明了这一点),因为人们似乎无法以这种方式输入稀疏数据

  • 我使用
    expert\u real\u valued\u columns\u from\u input
    来获取列

修订版:

import pandas as pd
import numpy as np
import tensorflow as tf
import tempfile

np.random.seed([3,1415])

_x_df = pd.DataFrame(dict(
    cat1=np.random.choice((True, False), (100,),),
    val1=np.random.rand(100),
    val2=np.random.rand(100),
    val3=np.random.rand(100)))

_y_df = pd.DataFrame(dict(label=np.random.choice((0, 1), (100,))))

trainBegin, trainEnd = 0, 80
testBegin, testEnd = 80, 100
x_df_train = _x_df.iloc[trainBegin:trainEnd, :]
x_df_test = _x_df.iloc[testBegin:testEnd, :]
y_df_train = _y_df.iloc[trainBegin:trainEnd, :]
y_df_test = _y_df.iloc[testBegin:testEnd, :]

wide_columns = tf.contrib.learn.infer_real_valued_columns_from_input(x_df_train)

model_dir = tempfile.mkdtemp()
m = tf.contrib.learn.LinearClassifier(feature_columns=wide_columns, model_dir=model_dir)
m.fit(x_df_train, y_df_train, batch_size=5, steps=200)

results = m.evaluate(x_df_test, y_df_test, batch_size=5, steps=1)
for key in sorted(results):
    print("%s: %s" % (key, results[key]))
model_dir = tempfile.mkdtemp()
m = tf.contrib.learn.LinearClassifier(feature_columns=wide_columns, model_dir=model_dir)
m.fit(input_fn=train_input_fn, steps=200)

results = m.evaluate(input_fn=eval_input_fn, steps=1)
for key in sorted(results):
    print("%s: %s" % (key, results[key]))

accuracy: 0.45
eval_auc: 0.459596
loss: 0.771354
model_dir = tempfile.mkdtemp()
m = tf.contrib.learn.LinearClassifier(feature_columns=wide_columns, model_dir=model_dir)
m.fit(input_fn=train_input_fn, steps=200)
# 2 lines that are different ##########################
x, y = train_input_fn()
results = m.evaluate(x=x, y=y, batch_size=100, steps=1)
#######################################################
for key in sorted(results):
    print("%s: %s" % (key, results[key]))
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-135-5b53add19aac> in <module>()
     12 # p.fit(input_fn=train_input_fn, steps=10)
     13 x, y = train_input_fn()
---> 14 p.fit(x=df_train, y=df_train, steps=10, batch_size=100)
     15 results = p.evaluate(input_fn=eval_input_fn, steps=1)
     16 for key in sorted(results):

/Users/sean/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.pyc in fit(self, x, y, input_fn, steps, batch_size, monitors)
    171       if x is None:
    172         raise ValueError('Either x or input_fn must be provided.')
--> 173       input_fn, feed_fn = _get_input_fn(x, y, batch_size)
    174     elif (x is not None) or (y is not None):
    175       raise ValueError('Can not provide both input_fn and either of x and y.')

/Users/sean/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.pyc in _get_input_fn(x, y, batch_size)
     65 def _get_input_fn(x, y, batch_size):
     66   df = data_feeder.setup_train_data_feeder(
---> 67       x, y, n_classes=None, batch_size=batch_size)
     68   return df.input_builder, df.get_feed_dict_fn()
     69 

/Users/sean/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/io/data_feeder.pyc in setup_train_data_feeder(X, y, n_classes, batch_size, shuffle, epochs)
     97     ValueError: if one of `X` and `y` is iterable and the other is not.
     98   """
---> 99   X, y = _data_type_filter(X, y)
    100   if HAS_DASK:
    101     # pylint: disable=g-import-not-at-top

/Users/sean/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/io/data_feeder.pyc in _data_type_filter(X, y)
     65       y = extract_dask_labels(y)
     66   if HAS_PANDAS:
---> 67     X = extract_pandas_data(X)
     68     if y is not None:
     69       y = extract_pandas_labels(y)

/Users/sean/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/io/pandas_io.pyc in extract_pandas_data(data)
     51     return data.values.astype('float')
     52   else:
---> 53     raise ValueError('Data types for data must be int, float, or bool.')
     54 
     55 

ValueError: Data types for data must be int, float, or bool.
import pandas as pd
import numpy as np
import tensorflow as tf
import tempfile

np.random.seed([3,1415])

_x_df = pd.DataFrame(dict(
    cat1=np.random.choice((True, False), (100,),),
    val1=np.random.rand(100),
    val2=np.random.rand(100),
    val3=np.random.rand(100)))

_y_df = pd.DataFrame(dict(label=np.random.choice((0, 1), (100,))))

trainBegin, trainEnd = 0, 80
testBegin, testEnd = 80, 100
x_df_train = _x_df.iloc[trainBegin:trainEnd, :]
x_df_test = _x_df.iloc[testBegin:testEnd, :]
y_df_train = _y_df.iloc[trainBegin:trainEnd, :]
y_df_test = _y_df.iloc[testBegin:testEnd, :]

wide_columns = tf.contrib.learn.infer_real_valued_columns_from_input(x_df_train)

model_dir = tempfile.mkdtemp()
m = tf.contrib.learn.LinearClassifier(feature_columns=wide_columns, model_dir=model_dir)
m.fit(x_df_train, y_df_train, batch_size=5, steps=200)

results = m.evaluate(x_df_test, y_df_test, batch_size=5, steps=1)
for key in sorted(results):
    print("%s: %s" % (key, results[key]))