CSV 文件导入 SkFlow

CSV File Into SkFlow

我刚刚开始使用 Tensorflow。 据我了解,SkFlow 是...

Simplified interface for TensorFlow

对我来说简单就好。

TensorFlow's Github 使用 SkFlow 中包含的 Iris 数据集提供了一些有用的入门示例。这是来自第一个示例,线性分类器。

iris = datasets.load_iris()
feature_columns = learn.infer_real_valued_columns_from_input(iris.data)

iris 对象的类型为 <class 'sklearn.datasets.base.Bunch'>,是一个类似字典的结构,包含两个列表、数据和目标。

This link 显示如何从 CSV(或至少 URL)加载数据。在页面的顶部它显示了如何通过上面的方法加载,然后通过 URL,像这样

# Load the Pima Indians diabetes dataset from CSV URL
import numpy as np
import urllib
# URL REMOVED - SO DOES NOT LIKE SHORTENED URL
# URL for the Pima Indians Diabetes dataset
raw_data = urllib.urlopen(url)
# load the CSV file as a numpy matrix
dataset = np.loadtxt(raw_data, delimiter=",")
print(dataset.shape)
# separate the data from the target attributes
X = dataset[:,0:7]
y = dataset[:,8]

我知道X是数据,y是目标。但这不是 github 示例或指南第一个示例中的数据结构。

我是不是要将 CSV 数据转换为单个对象,如

    iris = datasets.load_iris()

或者我是否使用 Xy 输出?如果是这样,我如何使用 Github

上的线性分类器示例来做到这一点

我正在研究同一个教程。我使用 scikit learn 的 cross_validation 方法将 scikit Bunch 对象拆分为 train/test 个拆分。然后只需使用 classifier.fit 和 classifier.evaluate 方法中的那些。

from sklearn import cross_validation
import tensorflow as tf
import numpy as np
from sklearn import datasets

# load from scikit learn
iris = datasets.load_iris()
# break into train/test splits
x_train, x_test, y_train, y_test = cross_validation.train_test_split(
             iris.data, iris.target, test_size=0.2, random_state=42)

# commented out the previous loading code
'''
# Data sets
IRIS_TRAINING = "iris_training.csv"
IRIS_TEST = "iris_test.csv"
# Load datasets.
training_set = tf.contrib.learn.datasets.base.load_csv_with_header(
    filename=IRIS_TRAINING,
    target_dtype=np.int,
    features_dtype=np.float32)
test_set = tf.contrib.learn.datasets.base.load_csv_with_header(
    filename=IRIS_TEST,
    target_dtype=np.int,
    features_dtype=np.float32)
'''
# Specify that all features have real-value data
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)]

# Build 3 layer DNN with 10, 20, 10 units respectively.
classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns,
                                        hidden_units=[10, 20, 10],
                                        n_classes=3,
                                        model_dir="./tmp/iris_model")

# Fit model. Add your train data here
classifier.fit(x=x_train,y=y_train,steps=2000)

# Evaluate accuracy. Add your test data here
accuracy_score = classifier.evaluate(x=x_test,y=y_test)["accuracy"]
print('Accuracy: {0:f}'.format(accuracy_score))

# Classify two new flower samples.
new_samples = np.array(
    [[6.4, 3.2, 4.5, 1.5], [5.8, 3.1, 5.0, 1.7]], dtype=float)
y = list(classifier.predict(new_samples, as_iterable=True))
print('Predictions: {}'.format(str(y)))