Ошибка запуска примера skflow
Я только что установил skflow и TensorFlow, и у меня возникла проблема с примером, который поставляется с 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)
Любая помощь будет оценена.
2 ответа
Я думаю, что это проблема с интерфейсом между skflow и пандами. Попробуйте позвонить .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)
Спасибо за использование skflow! Мы добавили поддержку панд давно. Вы можете найти конкретную реализацию io / pandas_io.py в skflow:
Во многих наших примерах для загрузки данных используются панды, например, примеры классификации текста, например:
Надеюсь, что это помогает и радует, используя skflow!