Tensorflow学习笔记:分类算法 Iris花分类

Classification

分类是一种有监督的机器学习方法,用于将数据点分类为不同标签的类。 分类算法用于预测某个数据点适合某个类别的概率。 在本文中,我们将使用 Tensorflow 根据花朵的属性对花朵进行分类。

Classification on Flower Dataset

Data

数据集将花分为 3 个不同的物种

  • setosa
  • versicolor
  • viginica.

每朵花有四个属性

  • sepal length
  • sepal width
  • petal length
  • petal width

先倒入模块和定义常量

from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
import pandas as pd

# constants
CSV_COLUMN_NAMES = ['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth', 'Species']
SPECIES = ['Setosa', 'Versicolor', 'Virginica']

然后从tf.keras.utils加载数据

# load dataset
train_path = tf.keras.utils.get_file(
    "iris_training.csv", "https://storage.googleapis.com/download.tensorflow.org/data/iris_training.csv")
test_path = tf.keras.utils.get_file(
    "iris_test.csv", "https://storage.googleapis.com/download.tensorflow.org/data/iris_test.csv")
    
train = pd.read_csv(train_path, names=CSV_COLUMN_NAMES, header=0)
test = pd.read_csv(test_path, names=CSV_COLUMN_NAMES, header=0)

keras 是 tensorflow 中的一个模块,其中包含我们可以使用的数据集。 我们可以使用 train.head() 查看我们的数据
在这里插入图片描述

特征列

就像线性回归示例一样,我们必须创建特征列。

my_feature_columns = []
for key in train.keys():
    my_feature_columns.append(tf.feature_column.numeric_column(key=key))
print(my_feature_columns)

Input Function

然后我们定义输入函数

def input_fn(features, labels, training=True, batch_size=256):
    # Convert the inputs to a Dataset.
    dataset = tf.data.Dataset.from_tensor_slices((dict(features), labels))

    # Shuffle and repeat if you are in training mode.
    if training:
        dataset = dataset.shuffle(1000).repeat()
    
    return dataset.batch(batch_size)

Model

有多种模型可供选择,例如DNNClassifierLinear Classifier。 在这里,我们将使用 DNNClassifier,因为它可以提供更好的结果。

# build a DNN with 2 hidden layers with 30 and 10 hidden nodes each.
classifier = tf.estimator.DNNClassifier(
    feature_columns=my_feature_columns,
    hidden_units=[30, 10],  # Two hidden layers of 30 and 10 nodes respectively.
    n_classes=3) # The model must choose between 3 classes.

实际上,这是一个具有以下架构的神经网络。在这里插入图片描述
需要注意的是,隐藏层的神经元数量是任意的,可以进行试验。 尝试更改它们以查看它们如何影响结果!

Training

训练模型

classifier.train(
    input_fn=lambda: input_fn(train, train_y, training=True),
    steps=5000 # classifier run for 5000 steps
    )

Evaluation

看看模型的好坏

eval_result = classifier.evaluate(
    input_fn=lambda: input_fn(test, test_y, training=False))

print('\nTest set accuracy: {accuracy:0.3f}\n'.format(**eval_result))

我们应该得到超过 90% 的准确率。

Conclusion

这是使用 Iris 花数据集对 Tensorflow 和分类算法的简单介绍。 然而,事实上我们可以用数据和模型做很多事情。 并且越来越熟悉 python 和 tensorflow 可以给我们带来更有趣的可视化和结果。下次再见!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值