CSV文件到SkFlow

时间:2016-12-13 22:03:01

标签: python tensorflow skflow

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

  

TensorFlow的简化界面

对我来说简单就是好。

使用SkFlow中包含的Iris数据集,

TensorFlow's Github有一些有用的入门示例。这是第一个例子,线性分类器。

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

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

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上的线性分类器示例

1 个答案:

答案 0 :(得分:1)

我正在研究相同的教程。我使用scikit learn的cross_validation方法将scikit Bunch对象分解为train / test splits。然后只使用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)))