簡體   English   中英

DNNClassifier:'DataFrame' 對象沒有屬性 'dtype'

[英]DNNClassifier: 'DataFrame' object has no attribute 'dtype'

我正在嘗試使用從 csv 讀取的一些數據運行 tensorflow DNNClassifier 模型。 即使我將每列的數據類型轉換為 float32,我仍然得到 'DataFrame' 對象沒有屬性 'dtype' 錯誤。 如果您能幫助我,我將不勝感激。

數據格式:27 列,23 個輸入,4 個類

謝謝

import numpy as np
import pandas as pd
import tensorflow as tf
import matplotlib.pyplot as plt
%matplotlib inline 

factors = pd.read_csv('xxx.csv')

#Formatting data to float32
factors['1'] = factors['1'].astype('float32')
factors['2'] = factors['2'].astype('float32')
...
factors['27'] = factors['27'].astype('float32')

#Definition of in- and output
feat_data = factors[['1', '2', ... '23']]
labels = factors[['24', '25','26', '27']]

#Train-Test Split
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(feat_data,labels, test_size=0.3, random_state=101)

from sklearn.preprocessing import MinMaxScalerscaler = MinMaxScaler()
scaled_x_train = scaler.fit_transform(X_train) scaled_x_test = scaler.transform(X_test)

#Model
from tensorflow import estimator 

feat_cols = [tf.feature_column.numeric_column('x', shape [23],dtype=tf.float32)]

deep_model = estimator.DNNClassifier(hidden_units=[23,23,23],
                        feature_columns=feat_cols,
                        n_classes=4, optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.01) )

input_fn = estimator.inputs.numpy_input_fn(x {'x':scaled_x_train},y=y_train,shuffle=True,batch_size=10,num_epochs=5)

deep_model.train(input_fn=input_fn,steps=50)


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-169-9b2e050e4e40> in <module>()
----> 1 deep_model.train(input_fn=input_fn,steps=50)

~\Anaconda\envs\tfdeeplearning\lib\site- packages\tensorflow\python\estimator\estimator.py in train(self, input_fn, hooks, steps, max_steps)
    239       hooks.append(training.StopAtStepHook(steps, max_steps))
    240 
 --> 241     loss = self._train_model(input_fn=input_fn, hooks=hooks)
    242     logging.info('Loss for final step: %s.', loss)
    243     return self

~\Anaconda\envs\tfdeeplearning\lib\site-packages\tensorflow\python\estimator\estimator.py in _train_model(self, input_fn, hooks)
    626       global_step_tensor = self._create_and_assert_global_step(g)
    627       features, labels = self._get_features_and_labels_from_input_fn(
--> 628           input_fn, model_fn_lib.ModeKeys.TRAIN)
    629       estimator_spec = self._call_model_fn(features, labels,
    630                                            model_fn_lib.ModeKeys.TRAIN)

~\Anaconda\envs\tfdeeplearning\lib\site-packages\tensorflow\python\estimator\estimator.py in _get_features_and_labels_from_input_fn(self, input_fn, mode)
    497 
    498   def _get_features_and_labels_from_input_fn(self, input_fn, mode):
--> 499     result = self._call_input_fn(input_fn, mode)
    500     if isinstance(result, (list, tuple)):
    501       if len(result) != 2:

~\Anaconda\envs\tfdeeplearning\lib\site-packages\tensorflow\python\estimator\estimator.py in _call_input_fn(***failed resolving arguments***)
    583       kwargs['config'] = self.config
    584     with ops.device('/cpu:0'):
--> 585       return input_fn(**kwargs)
    586 
    587   def _call_model_fn(self, features, labels, mode):

~\Anaconda\envs\tfdeeplearning\lib\site-packages\tensorflow\python\estimator\inputs\numpy_io.py in input_fn()
    122         num_threads=num_threads,
    123         enqueue_size=batch_size,
--> 124         num_epochs=num_epochs)
    125 
    126     features = (queue.dequeue_many(batch_size) if num_epochs is None

~\Anaconda\envs\tfdeeplearning\lib\site-packages\tensorflow\python\estimator\inputs\queues\feeding_functions.py in _enqueue_data(data, capacity, shuffle, min_after_dequeue, num_threads, seed, name, enqueue_size, num_epochs)
    315     elif isinstance(data, collections.OrderedDict):
    316       types = [dtypes.int64] + [
--> 317           dtypes.as_dtype(col.dtype) for col in data.values()
    318       ]
    319       queue_shapes = [()] + [col.shape[1:] for col in data.values()]

~\Anaconda\envs\tfdeeplearning\lib\site-packages\tensorflow\python\estimator\inputs\queues\feeding_functions.py in <listcomp>(.0)
    315     elif isinstance(data, collections.OrderedDict):
    316       types = [dtypes.int64] + [
--> 317           dtypes.as_dtype(col.dtype) for col in data.values()
    318       ]
    319       queue_shapes = [()] + [col.shape[1:] for col in data.values()]

 ~\Anaconda\envs\tfdeeplearning\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
   3079             if name in self._info_axis:
   3080                 return self[name]
-> 3081             return object.__getattribute__(self, name)
   3082 
   3083     def __setattr__(self, name, value):

 AttributeError: 'DataFrame' object has no attribute 'dtype'`$`

Tensorflow假設你通過numpy的陣列不是大熊貓DataFrames(具有dtype屬性)。 因此,您應該將df.values而不是df傳遞給 tensorflow 函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM