Python 如何使用tf.estimator.DNNClassifier(Scikit Flow?)
有人能给我举一个tf.estimator.DNNClassifier(最初是skflow)的基本工作示例吗 因为我熟悉Sklearn,所以读到Scikit Flow on时我很兴奋。尤其是api看起来与SK Learn非常相似 然而,我在从博客获取代码时遇到了一个问题 然后我读到它移到了 经过进一步的调查,我发现我搬去了 然而,现在估计器的api似乎和sklearn分类器有很大的不同 如果有人能给我举一个基本的工作示例,我将不胜感激 这是上面博客中的代码Python 如何使用tf.estimator.DNNClassifier(Scikit Flow?),python,tensorflow,machine-learning,scikit-learn,skflow,Python,Tensorflow,Machine Learning,Scikit Learn,Skflow,有人能给我举一个tf.estimator.DNNClassifier(最初是skflow)的基本工作示例吗 因为我熟悉Sklearn,所以读到Scikit Flow on时我很兴奋。尤其是api看起来与SK Learn非常相似 然而,我在从博客获取代码时遇到了一个问题 然后我读到它移到了 经过进一步的调查,我发现我搬去了 然而,现在估计器的api似乎和sklearn分类器有很大的不同 如果有人能给我举一个基本的工作示例,我将不胜感激 这是上面博客中的代码 import tensorflow.co
import tensorflow.contrib.learn as skflow
from sklearn import datasets, metrics
iris = datasets.load_iris()
classifier = skflow.TensorFlowDNNClassifier(hidden_units=[10, 20, 10], n_classes=3)
classifier.fit(iris.data, iris.target)
score = metrics.accuracy_score(iris.target, classifier.predict(iris.data))
print("Accuracy: %f" % score)
API非常有用,因此现在您可以执行类似的操作(提供了一个官方示例):
将tensorflow导入为tf
从sklearn导入数据集、度量
def序列输入(特征、标签、批次大小):
dataset=tf.data.dataset.from_tensor_切片((dict(特征),标签))
返回dataset.shuffle(1000).repeat().batch(批大小)
iris=数据集。加载\u iris()
列车×={
“0”:iris.data[:,0],
“1”:iris.data[:,1],
“2”:iris.data[:,2],
“3”:iris.data[:,3],
}
my_feature_columns=[]
对于车内钥匙×钥匙():
my\u feature\u columns.append(tf.feature\u column.numeric\u column(key=key))
clf=tf.estimator.DNNClassifier(隐藏单元=[10,20,10],特征列=我的特征列,n\u类=3)
clf.train(input\u fn=lambda:train\u input\u fn(train\u x,iris.target,32),步长=10000)
preds=list()
对于idx,枚举中的p(分类器.predict(input_fn=lambda:train_input_fn(train_x,iris.target,32)):
preds.append(p['class_id'][0])
如果idx==99:
打破
打印(度量精度分数(iris.target[:100],preds))
但现在最好像这样使用TF Keras API:
将tensorflow导入为tf
从sklearn导入数据集、度量
def序列输入(特征、标签、批次大小):
dataset=tf.data.dataset.from_tensor_切片((dict(特征),标签))
返回dataset.shuffle(1000).repeat().batch(批大小)
iris=数据集。加载\u iris()
clf=tf.keras.models.Sequential([
致密层(10,激活='s形'),
致密层(20,激活='s形'),
致密层(10,激活='s形'),
tf.keras.layers.Dense(3,活化='softmax'),
])
编译(优化器='adam',loss='classifical_crossentropy',metrics=['accurity'])
clf.fit(iris.data,iris.target,批量大小=32)
太棒了!!非常感谢你!由于api发生了很大的变化,我假设我不能使用sklearn.model_选择中的交叉验证来获得不同的分数,比如f1_宏?它看起来是这样的,所以您可以使用KFold
fromsklearn
实现自己的交叉验证方法,如图所示。