一、使用pandas对鸢尾花的数据集进行读取
import pandas as pd
import tensorflow as tf
CSV_COLUMN_NAMES = ['SepaLength', 'SepalWidth','PetalLength', 'PetalWidth','Species'] # 鸢尾花的四个特征,花萼长度,花萼宽度,花瓣长度,花瓣宽度
data_train = pd.read_csv('iris_training.csv', names = CSV_COLUMN_NAMES, header = 0) # pandas读取训练集
data_test = pd.read_csv('iris_test.csv',names = CSV_COLUMN_NAMES, header = 0) # pandas读取测试集
print(data_train.head(5)) # 显示训练集数据的前五行
二、构建模型
1. 需要指定模型的输入特征和预测值。该例中,输入特征有四个:
- 花萼长度(seqpallength)
- 花萼宽度(sepalwidth)
- 花瓣长度(petallength)
- 花瓣宽度(petalwidth)
训练集中的最后一列是预测值,species代表鸢尾花的种类,分别用0、1、2表示:
- 山鸢尾(0)
- 变色鸢尾(1)
- 维吉尼亚鸢尾(2)
2.将属性值和标记值区分开,并提取特征值
train_x, train_y = data_train, data_train.pop('Species') # 删除训练集的最后一个列元素并返回作为训练的标记值
test_x, test_y = data_test, data_test.pop('Species')
从train_x或者test_x提取特征值:
my_feature_columns = []
for key in train_x.keys():
my_feature_columns.append(tf.feature_column.numeric_column(key = key))
print(my_feature_columns)
3.构建深度神经网络分类器
tf.estimator提供了各种预定义的模型,称为Estimators
,用户可以“开箱即用”对数据进行训练和评估操作。使用tf.estimator,你可以使用几行代码实例化tf.estimator.DNNClassifier
:
# 构建训练模型
classifier = tf.estimator.DNNClassifier(
# 接受那些输入特征
feature_columns = my_feature_columns,
# 包含的隐藏层及每个隐藏层包含的神经元数目
hidden_units = [10,20],
# 最终结果分成几类
n_classes = 3
)