张量流类型线性分类器的误差'feature_columns'



我只是想让一些代码工作,但我不断收到错误。

代码是

import tensorflow.contrib.learn as skflow
from sklearn import datasets, metrics
iris = datasets.load_iris()
classifer = skflow.LinearClassifier(n_classes=3)
classifier.fit(iris.data, iris.target)
score = metrics.accuracy_score(iris.target, classifier.predict(iris.data))
print ("Accuracy: %f" % score)

但是我收到此错误(研究和修改后的最新错误)

Traceback (most recent call last):
File "E:UsersblackPythonmachine-learningMLappIris.py", line 6, in <module>
classifer = skflow.LinearClassifier(n_classes=3)
TypeError: __init__() missing 1 required positional argument: 'feature_columns'

任何帮助将不胜感激。

  • 蟒蛇:3.5
  • 张量流:1.3.0
  • 学习:0.18.2
  • 视窗 10 64 位

你必须定义你的feature_columns - 这是完整的脚本:

import tensorflow as tf
import tensorflow.contrib.learn as skflow
from sklearn import datasets, metrics
iris = datasets.load_iris()
feature_columns = skflow.infer_real_valued_columns_from_input(iris.data)
# WARNING:tensorflow:float64 is not supported by many models, consider casting to float32.
classifier = skflow.LinearClassifier(feature_columns=feature_columns, n_classes=3)
classifier.fit(x=iris.data, y=iris.target, steps=20000)
predictions = list(classifier.predict(iris.data, as_iterable=True))
score = metrics.accuracy_score(iris.target, predictions)
print ("Accuracy: %f" % score)
# Accuracy: 0.980000

或者,您也可以使用 evaluate 方法使用单个命令进行评估:

accuracy_score = classifier.evaluate(iris.data, iris.target)["accuracy"]
print ("Accuracy: %f" % accuracy_score)
# Accuracy: 0.980000

警告是由于iris.datafloat64 - 它似乎不会影响这里的任何东西,但您可以随时将其投射到 float32 .

tf.contrib.learn快速入门以及此简短教程也可能很有用。

测试:

  • 蟒蛇 3.5.3
  • 张量流 1.2.1
  • scikit-learn 0.18.1
  • 视窗 7(64 位)

最新更新