AI - TensorFlow - 分类与回归(Classification vs Regression)
分类与回归
分类(Classification)与回归(Regression)的区别在于输出变量的类型。
通俗理解,定量输出称为回归,或者说是连续变量预测;定性输出称为分类,或者说是离散变量预测。
回归问题的预测结果是连续的,通常是用来预测一个值,如预测房价、未来的天气情况等等。
一个比较常见的回归算法是线性回归算法(LR,Linear Regression)。
回归分析用在神经网络上,其最上层不需要加上softmax函数,而是直接对前一层累加即可。
回归是对真实值的一种逼近预测。
分类问题的预测结果是离散的,是用于将事物打上一个标签,通常结果为离散值。
分类通常是建立在回归之上,分类的最后一层通常要使用softmax函数进行判断其所属类别。
分类并没有逼近的概念,最终正确结果只有一个,错误的就是错误的,不会有相近的概念。
最常见的分类方法是逻辑回归(Logistic Regression),或者叫逻辑分类。
MNIST数据集
MNIST(Mixed National Institute of Standards and Technology database)是一个计算机视觉数据集;
- 官方下载地址:http://yann.lecun.com/exdb/mnist/
- 包含70000张手写数字的灰度图片,其中60000张为训练图像和10000张为测试图像;
- 每一张图片都是28*28个像素点大小的灰度图像;
如果无法从网络下载MNIST数据集,可从官方下载,然后存放在当前脚本目录下的新建MNIST_data目录即可;
- MNIST_data\train-images-idx3-ubyte.gz
- MNIST_data\train-labels-idx1-ubyte.gz
- MNIST_data\t10k-images-idx3-ubyte.gz
- MNIST_data\t10k-labels-idx1-ubyte.gz
示例程序
# coding=utf-8
from __future__ import print_function
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data # MNIST数据集
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '' old_v = tf.logging.get_verbosity()
tf.logging.set_verbosity(tf.logging.ERROR) mnist = input_data.read_data_sets('MNIST_data', one_hot=True) # 准备数据(如果本地没有数据,将从网络下载) def add_layer(inputs, in_size, out_size, activation_function=None, ):
Weights = tf.Variable(tf.random_normal([in_size, out_size]))
biases = tf.Variable(tf.zeros([1, out_size]) + 0.1, )
Wx_plus_b = tf.matmul(inputs, Weights) + biases
if activation_function is None:
outputs = Wx_plus_b
else:
outputs = activation_function(Wx_plus_b, )
return outputs def compute_accuracy(v_xs, v_ys):
global prediction
y_pre = sess.run(prediction, feed_dict={xs: v_xs})
correct_prediction = tf.equal(tf.argmax(y_pre, 1), tf.argmax(v_ys, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
result = sess.run(accuracy, feed_dict={xs: v_xs, ys: v_ys})
return result xs = tf.placeholder(tf.float32, [None, 784]) # 输入数据是784(28*28)个特征
ys = tf.placeholder(tf.float32, [None, 10]) # 输出数据是10个特征 prediction = add_layer(xs, 784, 10, activation_function=tf.nn.softmax) # 激励函数为softmax cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(prediction),
reduction_indices=[1])) # loss函数(最优化目标函数)选用交叉熵函数 train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) # train方法(最优化算法)采用梯度下降法 sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init) for i in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100) # 每次只取100张图片,免得数据太多训练太慢
sess.run(train_step, feed_dict={xs: batch_xs, ys: batch_ys})
if i % 50 == 0: # 每训练50次输出预测精度
print(compute_accuracy(
mnist.test.images, mnist.test.labels))
程序运行结果:
Extracting MNIST_data\train-images-idx3-ubyte.gz
Extracting MNIST_data\train-labels-idx1-ubyte.gz
Extracting MNIST_data\t10k-images-idx3-ubyte.gz
Extracting MNIST_data\t10k-labels-idx1-ubyte.gz
0.146
0.6316
0.7347
0.7815
0.8095
0.8198
0.8306
0.837
0.8444
0.8547
0.8544
0.8578
0.8651
0.8649
0.8705
0.8704
0.8741
0.8719
0.8753
0.8756
问题处理
问题现象
执行程序提示“Please use tf.data to implement this functionality.”等信息

WARNING:tensorflow:From D:/Anliven/Anliven-Code/PycharmProjects/TempTest/TempTest_2.py:13: read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.
Instructions for updating:
Please use alternatives such as official/mnist/dataset.py from tensorflow/models.
WARNING:tensorflow:From C:\Users\anliven\AppData\Local\conda\conda\envs\mlcc\lib\site-packages\tensorflow\contrib\learn\python\learn\datasets\mnist.py:260: maybe_download (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.
Extracting MNIST_data\train-images-idx3-ubyte.gz
Instructions for updating:
Please write your own downloading logic.
WARNING:tensorflow:From C:\Users\anliven\AppData\Local\conda\conda\envs\mlcc\lib\site-packages\tensorflow\contrib\learn\python\learn\datasets\mnist.py:262: extract_images (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.
Instructions for updating:
Please use tf.data to implement this functionality.
Extracting MNIST_data\train-labels-idx1-ubyte.gz
......
......
处理方法
参考链接:https://stackoverflow.com/questions/49901806/tensorflow-importing-mnist-warnings
AI - TensorFlow - 分类与回归(Classification vs Regression)的更多相关文章
- 从损失函数优化角度:讨论“线性回归(linear regression)”与”线性分类(linear classification)“的联系与区别
1. 主要观点 线性模型是线性回归和线性分类的基础 线性回归和线性分类模型的差异主要在于损失函数形式上,我们可以将其看做是线性模型在多维空间中“不同方向”和“不同位置”的两种表现形式 损失函数是一种优 ...
- 分类算法之逻辑回归(Logistic Regression
分类算法之逻辑回归(Logistic Regression) 1.二分类问题 现在有一家医院,想要对病人的病情进行分析,其中有一项就是关于良性\恶性肿瘤的判断,现在有一批数据集是关于肿瘤大小的,任务就 ...
- CART分类与回归树 学习笔记
CART:Classification and regression tree,分类与回归树.(是二叉树) CART是决策树的一种,主要由特征选择,树的生成和剪枝三部分组成.它主要用来处理分类和回归问 ...
- SVM分类与回归
SVM(支撑向量机模型)是二(多)分类问题中经常使用的方法,思想比较简单,但是具体实现与求解细节对工程人员来说比较复杂,如需了解SVM的入门知识和中级进阶可点此下载.本文从应用的角度出发,使用Libs ...
- 【Todo】【转载】Spark学习 & 机器学习(实战部分)-监督学习、分类与回归
理论原理部分可以看这一篇:http://www.cnblogs.com/charlesblc/p/6109551.html 这里是实战部分.参考了 http://www.cnblogs.com/shi ...
- 逻辑回归模型(Logistic Regression, LR)基础
逻辑回归模型(Logistic Regression, LR)基础 逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,但也就由于这个逻辑函 ...
- CART分类与回归树与GBDT(Gradient Boost Decision Tree)
一.CART分类与回归树 资料转载: http://dataunion.org/5771.html Classification And Regression Tree(CART)是决策 ...
- 【机器学习笔记之三】CART 分类与回归树
本文结构: CART算法有两步 回归树的生成 分类树的生成 剪枝 CART - Classification and Regression Trees 分类与回归树,是二叉树,可以用于分类,也可以用于 ...
- 回归树(Regression Tree)
目录 回归树 理论解释 算法流程 ID3 和 C4.5 能不能用来回归? 回归树示例 References 说到决策树(Decision tree),我们很自然会想到用其做分类,每个叶子代表有限类别中 ...
随机推荐
- React从入门到放弃之前奏(2):React简介
本系列将尽可能使用ES6(ES2015)语法.所以均在上节webpack的基础上做开发. React是Facebook开发的一款JS库,因为基于Virtual DOM,所以响应速度快,以及支持跨平台. ...
- Android 打造任意层级树形控件 考验你的数据结构和设计
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40212367,本文出自:[张鸿洋的博客] 1.概述 大家在项目中或多或少的可能会 ...
- CSS透明opacity和IE各版本透明度滤镜filter的准确用法
滤镜名 说明 Alpha 让HTML元件呈现出透明的渐进效果Blur 让HTML元件产生风吹模糊的效果Chroma 让图像中的某一颜色变成透明色DropShadow ...
- CentOS7上解决tomcat不能被外部浏览访问的问题?
在linux上开启的tomcat使用浏览器访问不了.主要原因在于防火墙的存在,导致的端口无法访问. CentOS7使用firewall而不是iptables.所以解决这类问题可以通过添加firewal ...
- 一步一步理解 python web 框架,才不会从入门到放弃
要想清楚地理解 python web 框架,首先要清楚浏览器访问服务器的过程. 用户通过浏览器浏览网站的过程: 用户浏览器(socket客户端) 3. 客户端往服务端发消息 6. 客户端接收消息 7. ...
- Mave手动安装jar包
今天配置Maven项目时有一个相应的jdbc驱动jar包导不进去,就自己导入了. 首先在官网上下载该jar包,地址为http://mvnrepository.com/ 点击jar下载. 用maven命 ...
- .net core在网关中统一配置Swagger
最近在做微服务的时候,由于我们是采用前后端分离来开发的,提供给前端的直接是Swagger,如果Swagger分布在各个API中,前端查看Swagger的时候非常不便,因此,我们试着将Swagger集中 ...
- Django rest_framework快速入门
一.什么是REST 面向资源是REST最明显的特征,资源是一种看待服务器的方式,将服务器看作是由很多离散的资源组成.每个资源是服务器上一个可命名的抽象概念.因为资源是一个抽象的概念,所以它不仅仅能代表 ...
- C++中虚拟继承
多重继承 在多重继承中,基类的构造函数的调用次序即不受派生类构造函数初始化列表中出现的基类构造函数的影响,也不受基类在构造函数初始化列表中的出现次序的影响,它按照基类在类派生列表中的出现次序依次调用相 ...
- 种树 BZOJ2151 模拟费用流
分析: 我们如果选择点i,那么我们不能选择i-1和i+1,如果没有这个限制,直接贪心就可行,而加上这个限制,我们考虑同样贪心,每次选择i后,将点i-1,i+1从双向链表中删除,并且将-a[i]+a[i ...