2015-12-09 4 views
3

Я только что установил skflow и TensorFlow, и у меня возникла проблема с примером, который поставляется с skflow. Пример кода:Ошибка при запуске примера skflow

import random 
import pandas 
from sklearn.linear_model import LogisticRegression 
from sklearn.metrics import accuracy_score 
from sklearn.cross_validation import train_test_split 

import tensorflow as tf 
import skflow 

data = pandas.read_csv('tf_examples/data/titanic_train.csv') 

# Use SciKit Learn 
y, X = data['Survived'], data[['Age', 'SibSp', 'Fare']].fillna(0) 

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) 

lr = LogisticRegression() 
lr.fit(X_train, y_train) 
print accuracy_score(lr.predict(X_test), y_test) 

# 3 layer neural network with rectified linear activation. 

random.seed(42) 
classifier = skflow.TensorFlowDNNClassifier(hidden_units=[10, 20, 10], 
              n_classes=2, batch_size=128, steps=500, 
              learning_rate=0.05) 
classifier.fit(X_train, y_train) 
print accuracy_score(classifier.predict(X_test), y_test) 

Когда я запускаю этот пример, я получаю:

python Example1.py 
0.664804469274 
Traceback (most recent call last): 
    File "Example1.py", line 27, in <module> 
    classifier.fit(X_train, y_train) 
    File "//anaconda/lib/python2.7/site-packages/skflow/__init__.py", line 119, in fit 
    self._setup_data_feeder(X, y) 
    File "//anaconda/lib/python2.7/site-packages/skflow/__init__.py", line 71, in _setup_data_feeder 
    self.n_classes, self.batch_size) 
    File "//anaconda/lib/python2.7/site-packages/skflow/data_feeder.py", line 61, in __init__ 
    x_dtype = np.int64 if X.dtype == np.int64 else np.float32 
    File "//anaconda/lib/python2.7/site-packages/pandas/core/generic.py", line 2246, in __getattr__ 
    (type(self).__name__, name)) 
AttributeError: 'DataFrame' object has no attribute 'dtype' 

происходит сбой на:

classifier.fit(X_train, y_train) 

Любая помощь будет принята с благодарностью.

ответ

4

Я думаю, что это проблема с интерфейсом между skflow и pandas. Попробуйте позвонить .values на кадры данных, прежде чем передавать их в skflow:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) 

lr = LogisticRegression() 
lr.fit(X_train.values, y_train.values) 
print accuracy_score(lr.predict(X_test.values), y_test.values) 

# 3 layer neural network with rectified linear activation. 

random.seed(42) 
classifier = skflow.TensorFlowDNNClassifier(hidden_units=[10, 20, 10], 
             n_classes=2, batch_size=128, steps=500, 
             learning_rate=0.05) 
classifier.fit(X_train.values, y_train.values) 
print accuracy_score(classifier.predict(X_test.values), y_test.values) 
+0

Это работает! Спасибо. – CBrauer

+0

Ты потрясающий! Спасибо! Я изо всех сил пытался заставить этот пример работать. –

0

спасибо за использование skflow! Мы добавили поддержку pandas давно. Вы можете найти конкретную реализацию io/pandas_io.py in skflow:

Больше наших примеры теперь использовать панда, чтобы загрузить данные, например, примеры классификации текста, как this one:

Надеется, что это помогает и счастливой, используя skflow!

+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/11267575) – mrry

+0

Получил. Спасибо за совет. Я пересмотрел ответ. –

Смежные вопросы