【学习笔记】l1正则化编程

这篇学习笔记介绍了如何在神经网络中应用l1正则化,以限制权重和偏置数量不超过600个,并保持损失函数(loss)不超过0.35。文章通过一个实例展示了数据预处理、神经网络设计以及训练过程,使用了Adam优化器而非Ftrl。作者强调了在训练集中应用正则化而在验证集不应用的重要性。经过训练,模型在特定任务上的AUC值约为0.9,表明模型性能良好。笔记最后提到了接下来会涵盖更多关于全连接神经网络和卷积神经网络的内容。
摘要由CSDN通过智能技术生成

这里前提要求我们weights+biases的数量不能超过600个,并且loss(对数损失函数)的loss不能超过0.35 。现在让我们来处理数据集。

这里我们是median_house_value作为targets,并且超过75%的设为1,低于75%的设为0。这里我们不再按照之前的写法,而是将所有的特征进行分箱。

import numpy as np
import pandas as pd
import tensorflow as tf

def gets_onehot(inputs, features, buckets):
    _inputs = {features: inputs.values}
    df_fc = tf.feature_column.numeric_column(features)
    _range = np.linspace(inputs.min(), inputs.max(), buckets+1)
    _range = np.delete(_range, -1)
    _range = np.delete(_range, 0)
    _column = tf.feature_column.bucketized_column(df_fc, list(_range))
    _tensor = tf.feature_column.input_layer(_inputs, [_column])
    return _tensor


df = pd.read_csv('california_housing_train.csv')
df['rooms_per_person'] = df['total_rooms'] / df['population']
df = df.reindex(np.random.permutation(df.index))
df = df.sort_index()
sess = tf.Session()
df_longitude = gets_onehot(df['longitude'], 'longitude', 50)
df_latitude = gets_onehot(df['latitude'], 'latitude', 50)
df_housing_median_age = gets_onehot(df['housing_median_age'], 'housing_median_age', 10)
df_households = gets_onehot(df['households'], 'households', 10)
df_total_rooms = gets_onehot(df['total_rooms'], 'total_rooms', 10)
df_total_bedrooms = gets_onehot(df['total_bedrooms'], 'total_bedrooms', 10)
df_population = gets_onehot(df['population'], 'population', 10)
df_median_income = gets_onehot(df['median_income'], 'median_income', 10)
df_rooms_per_person = gets_onehot(df['rooms_per_person'], 'rooms_per_person', 10)
np_targets = np.array(((df['median_house_value'] > 265000).astype('float32')))[:, np.newaxis]
np_concat = np.concatenate(sess.run([df_longitude, df_latitude, df_housing_median_age,
                                 df
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值