tensonflow DNN实验

这篇博客介绍了如何使用TensorFlow进行深度神经网络(DNN)实验,特别是针对流失预测问题。首先,博主展示了使用`tf.contrib.learn.DNNClassifier`的方法,包括数据预处理和模型训练。接着,博主自定义了神经网络层并构建了一个DNN模型,通过梯度下降优化器调整损失函数。整个实验过程包含了数据读取、模型定义、训练和评估。
摘要由CSDN通过智能技术生成

一直想用 tensonflow,就用一个简单的神经网络(DNN)实验了一下流失预测


方法一:用 contrib.learn 中 DNNClassifier函数


    df1 = pd.read_table('E:\\kaggle\\tensonflow\\chunrn_test3', sep=',', encoding="UTF-8")
    # print(df1[:5])
    print(df1[s_v1][:5])
    df1[s_v1] = df1[s_v1].astype(float)
    df1['target'] = df1['target'].astype(int)
    # scaler = StandardScaler().fit(x_train)
    # x_train = scaler.transform(x_train)
    df1_train = df1
    df1_test = df1
    def train_input_fn():
        return input_fn(df1_train)
    def test_input_fn():
        return input_fn(df1_test)
    G = globals()
    deep_columns = []
    for k in s_v1:
        temp = tf.contrib.layers.real_valued_column(k)
        G[k] = temp
        deep_columns.append(G[k])
    # deep_columns = tf.contrib.learn.infer_real_valued_columns_from_input(df1[s_v1])  #适合分类变量
    print(deep_columns)
    print ('1111111')
    model_dir = tempfile.mktemp()
    m = tf.contrib.learn.DNNClassifier(model_dir=model_dir,dropout = 0.3,
                                                     n_classes=2,
                                                     feature_columns=deep_columns,
                                                     hidden_units=[200, 100])
  optimizer=tf.train.ProximalAdagradOptimizer(learning_rate=0.1,l1_regularization_strength=0.001)
    m.fit(input_fn=train_input_fn, steps=10000)
    print ('2222222')
    m.export_savemodel(export_dir_base ='E:\\kaggle\\tensonflow\\')
    results = m.evaluate(input_fn=test_input_fn, steps=1)
    print("model directory = %s" % model_dir)


方法二:  自定义函数


def add_layer(inputs, in_size, out_size, activation_function=None):
    # add one more layer and return the output of this layer
    Weights = tf.Variable(tf.random_normal([in_size, out_size]))
    biases = tf.Variable(tf.random_normal([out_size]))
    Wx_plus_b = tf.matmul(inputs, Weights) + biases
    if activation_function is None:
        outputs = Wx_plus_b
    else:
        outputs = activation_function(Wx_plus_b)
    # tf.histogram_summary(layer_name + '/outputs', outputs)
    return outputs


    xs = tf.placeholder(tf.float32, [None, 96])
    ys = tf.placeholder(tf.float32, [None, 2])
    keep_prob = tf.placeholder(tf.float32)


    # 定义神经层:隐藏层和预测层
    # add hidden layer 输入值是 xs,在隐藏层有 10 个神经元
    l1 = add_layer(xs, 96, 200, activation_function=tf.nn.relu)
    l2 = add_layer(l1, 200, 100, activation_function=tf.nn.relu)
    l2 = tf.nn.dropout(l2, 0.7)
    # add output layer 输入值是隐藏层 l1,在预测层输出 1 个结果
    y_p = add_layer(l2, 100, 2, activation_function=None)


    # 定义 loss 表达式
    loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=y_p, labels=ys))
    # 选择 optimizer 使 loss 达到最小
    train_step = tf.train.GradientDescentOptimizer(0.005).minimize(loss)


    # important step 对所有变量进行初始化
    init = tf.initialize_all_variables()
    sess = tf.Session()
    # 上面定义的都没有运算,直到 sess.run 才会开始运算
    sess.run(init)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值