我刚开始使用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()
或者我是否使用X
和y
输出?如果是这样,我如何使用Github上的线性分类器示例
答案 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)))