TensorFlow练手小项目

内容介绍

该项目需要实现一个分类问题,输入数据X有两个属性,标签d包含两类,用整形数字0、1表示。

  • 读取数据 homework.npz
  • 请分析点(0.2, 0.2)所属类别
  • 尽可能的提升精度与速度,在精度大于95%时,速度因素更加需要考虑
    • 可以使用多层神经网络
    • 可以进行特征工程
  • 使用TensorBoard绘制所搭建的网络模型
  • 尝试使用numpy完成预测

读取数据

import numpy as np
files = np.load("homework.npz")
X = files['X']
label = files['d']

绘制不同特征与对应标签的散点图,以及特征分

参考博客:从np.random.normal()到正态分布的拟合

import matplotlib.pyplot as plt
import scipy.stats as st


plt.figure(figsize=(16,8))
for i in range(2):
    plt.subplot(2,2,i+1)
    plt.scatter(X[:,i], label, alpha= 0.3)
    plt.title('特征 {}'.format(i+1))
for i in range(2):
    plt.subplot(2,2,i+3)
    plt.hist(X[:,i],bins=50,density=True)
    x_mean = np.mean(X[:,i])
    x_std = np.std(X[:,i])
    x = np.linspace(-2, 2, 50)
    plt.plot(x, st.norm(x_mean, x_std).pdf(x), lw=2, c='r')
    plt.annotate('均值为:{:.2f} \n方差为:{:.2f}'.format(x_mean, x_std),xy=(1.5,0.6),weight='heavy')
    plt.title('特征 {}'.format(i+1))

在这里插入图片描述

观察上述四幅图像可以发现两特征属于正态分布,与标签分布也比较均衡。因此不需要对数据进行特征归一化和标签均衡

标签处理

  • 这里使用了独热编码
    将编码0转换为 [1 0]
    将编码1转换为 [0 1]
from sklearn.preprocessing import  OneHotEncoder

enc = OneHotEncoder(sparse=False)
# enc.fit(label.reshape(-1,1))
label_onehot = enc.fit_transform(label.reshape(-1,1))
for i in range(10):
    print(f'原始标签:{label[i]}, 处理后的标签:{label_onehot[i]}')
原始标签:1, 处理后的标签:[0. 1.]
原始标签:1, 处理后的标签:[0. 1.]
原始标签:1, 处理后的标签:[0. 1.]
原始标签:0, 处理后的标签:[1. 0.]
原始标签:0, 处理后的标签:[1. 0.]
原始标签:1, 处理后的标签:[0. 1.]
原始标签:1, 处理后的标签:[0. 1.]
原始标签:0, 处理后的标签:[1. 0.]
原始标签:0, 处理后的标签:[1. 0.]
原始标签:1, 处理后的标签:[0. 1.]

搭建神经网络

时间计算参考博客python计算时间的两种方式:time与datetime

  1. 隐藏层个数:2 ; 隐藏层元素个数:[6, 6] ;隐藏层激活函数:ReLu函数 ; 训练次数:2001 ; 特征工程:无
import tensorflow as tf
import datetime

x = tf.placeholder(tf.float32, [None, 2], name="input_x")
d = tf.placeholder(tf.float32, [None, 2], name="input_y")
# 对于sigmoid激活函数而言,效果可能并不理想
net = tf.layers.dense(x, 6, activation=tf.nn.relu)
net = tf.layers.dense(net, 6, activation=tf.nn.relu)
y = tf.layers.dense(net, 2, activation=None)
loss = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值