【TensorFlow 2.0】使用 tensorflow.keras 进行逻辑回归

1. 加载数据

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf

# 加载数据
data = pd.read_csv('./dataset/income.csv')

data.head() # head()默认显示前五行数据
data.iloc[:,-1].value_counts() # -1代表最后一列,value_counts()可以显示这一列的值出现的次数(类似于词频统计)

x_data = data.iloc[:,:-1] # 所有行的,最后一列之前的列
y_data = data.iloc[:,-1].replace(-1,0) #将-1转化成0

2. 可视化数据

# 数据可视化
plt.scatter(x_data,y_data)
plt.ion
plt.show

3. 创建模型

#创建tf.keras模型
model = tf.keras.Sequential() #顺序处理模型
model = tf.keras.Sequential(
    [
        tf.keras.layers.Dense(10,input_shape(4,),activation='relu'), # 第一层隐藏层
        tf.keras.layers.Dense(1,activation='relu'), # 第二层隐藏层,第二层不需要input_shape=x,会根据上一层的输出推断
        tf.keras.layers.Dense(1,activation='sigmoid')  # 输出层
    ]
)

# 编译模型,进行损失函数的配置
model.compile(
    optimizer = 'adma',
    loss='binary_crossentropy', # 逻辑回归使用 binary_crossentropy 作为损失函数
    metrics=['acc']
)
model.summary() #显示model的Dense的形状
#模型已经编译好了,可以进行训练了

4. 开始训练

# 开始训练
history = model.fit(x_data,y_data,epochs=50000)

5. 使用训练好的模型进行预测

# 使用model预测
model.predict(x_data)

6. 完整源代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf

#加载数据
data = pd.read_csv('./dataset/income.csv')

data.head() # head()默认显示前五行数据
data.iloc[:,-1].value_counts() # -1代表最后一列,value_counts()可以显示这一列的值出现的次数(类似于词频统计)

x_data = data.iloc[:,:-1] # 所有行的,最后一列之前的列
y_data = data.iloc[:,-1].replace(-1,0) #将-1转化成0

# 数据可视化
plt.scatter(x_data,y_data)
plt.ion
plt.show

#创建tf.keras模型
model = tf.keras.Sequential() #顺序处理模型
model = tf.keras.Sequential(
    [
        tf.keras.layers.Dense(10,input_shape(4,),activation='relu'), # 第一层隐藏层
        tf.keras.layers.Dense(1,activation='relu'), # 第二层隐藏层,第二层不需要input_shape=x,会根据上一层的输出推断
        tf.keras.layers.Dense(1,activation='sigmoid')  # 输出层
    ]
)

# 编译模型,进行损失函数的配置
model.compile(
    optimizer = 'adma',
    loss='binary_crossentropy', # 逻辑回归使用 binary_crossentropy 作为损失函数
    metrics=['acc']
)
model.summary() #显示model的Dense的形状
#模型已经编译好了,可以进行训练了

#开始训练
history = model.fit(x_data,y_data,epochs=50000)

#使用model预测
model.predict(x_data)

附录

1. 关于 全连接层tf.keras.layers.Dense()
tf.keras.layers.Dense(
    units,                                 # 正整数,输出空间的维数
    activation=None,                       # 激活函数,不指定则没有 ('relu','sigmoid','LeakyReLU')
    use_bias=True,						   # 布尔值,是否使用偏移向量
    kernel_initializer='glorot_uniform',   # 核权重矩阵的初始值设定项
    bias_initializer='zeros',              # 偏差向量的初始值设定项
    kernel_regularizer=None,               # 正则化函数应用于核权矩阵
    bias_regularizer=None,                 # 应用于偏差向量的正则化函数
    activity_regularizer=None,             # Regularizer function applied to the output of the layer (its "activation")
    kernel_constraint=None,                # Constraint function applied to the kernel weights matrix.
    bias_constraint=None, **kwargs         # Constraint function applied to the bias vector
)

1. 关于 model.compile()

model.compile()的作用: 设置优化器 , 损失函数 , 准确率评测标准
model.compile() 语法:
形式1

model.compile(optimizer = tf.keras.optimizers.优化器(参数),
              loss = tf.keras.losses.损失函数(参数),
              metrics = ["sparse_accuracy"]
              )

形式2

model.compile(optimizer = "sgd",
              loss = "mse",
              metrics = ["sparse_accuracy"]
              )

optimizer有四种,每种有两种表现形式:

“sgd” 或者 tf.optimizers.SGD(lr = 学习率, decay = 学习率衰减率,momentum = 动量参数)

“adagrad" 或者 tf.keras.optimizers.Adagrad(lr = 学习率, decay = 学习率衰减率)

”adadelta" 或者 tf.keras.optimizers.Adadelta(lr = 学习率,decay = 学习率衰减率)

“adam" 或者 tf.keras.optimizers.Adam(lr = 学习率, decay = 学习率衰减率)

loss有两种,每种有两种表现形式:

”mse" 或者 tf.keras.losses.MeanSquaredError()

"sparse_categorical_crossentropy" 或tf.keras.losses.SparseCatagoricalCrossentropy(from_logits = False)

Metrics标注网络评价指标,例如

"accuracy" : y_ture 和 y_pred 都是数值,如y_ = [1] y = [1] #y_为真实值,y为预测值

“sparse_accuracy":y_和y都是以独热码 和 概率分布表示,如y_ture = [0, 1, 0], y_pred = [0.256,
0.695, 0.048]

"sparse_categorical_accuracy" :检查 y_true 中的值(本身就是index) 与 y_pred 中最大值对应的index是否相等。 y_true是以数值形式给出, y_pred是以独热码给出,如y_ = [1], y = [0.256 0.695, 0.048]

上一篇:【TensorFlow 2.0】使用 tensorflow.keras 进行线性回归
### 回答1: 很抱歉,TensorFlow 2.0 中已经删除了 `tensorflow.contrib` 模块,因此不能直接导入 `tensorflow.contrib.learn`。不过,您可以使用 `TensorFlow 2.0` 中内置的 `tf.keras` 模块,或者使用 `TensorFlow Hub` 中的预训练模型。 ### 回答2: 要导入tensorflow.contrib.learn,您需要使用tensorflow 2.0的兼容性模块tf.compat.v1。在TensorFlow 2.0中,tf.contrib模块已被移除。然而,通过tf.compat.v1模块,您仍然可以使用一些tensorflow.contrib模块中的功能。 您可以按照以下步骤来导入tensorflow.contrib.learn: 1. 导入所需的模块: ```python import tensorflow.compat.v1 as tf from tensorflow.compat.v1 import contrib ``` 2. 启用兼容性模式: ```python tf.disable_v2_behavior() ``` 3. 现在您可以使用tf.contrib.learn及其功能: ```python contrib.learn.Estimator(...) ``` 注意:虽然这种方法使您能够导入tensorflow.contrib.learn,但由于tf.compat.v1模块是为了向后兼容而设计的,因此它可能在将来的版本中被删除。因此,最好尽量使用tensorflow 2.0的原生API。如果您使用tensorflow.contrib.learn的功能非常重要,您可以考虑使用旧版本的tensorflow(如tensorflow 1.15)来支持它。 ### 回答3: 在TensorFlow 2.0中,已经不再支持`tensorflow.contrib.learn`这个模块。`tensorflow.contrib`是一个容纳实验性、不太稳定或较少使用的功能和功能组件的命名空间,而且在TensorFlow 1.X版本中是存在的。在TensorFlow 2.0中,TensorFlow团队已经将这些组件整合到了其他模块中,或者将它们作为独立的项目进行维护。因此,如果你想在TensorFlow 2.0使用`tensorflow.contrib.learn`,你将无法直接导入它。 如果你仍然想使用类似于`tensorflow.contrib.learn`的某些功能,可以考虑以下方法: 1. 使用TensorFlow 2.0官方文档中提供的迁移指南,查找替代`tensorflow.contrib.learn`的功能或模块。官方文档通常会提供有关如何将旧版本的代码迁移到TensorFlow 2.0的详细说明。 2. 如果你只是需要用到一些机器学习算法,你可以考虑使用`scikit-learn`这个Python库。它是一个专门用于机器学习的库,提供了丰富的算法和工具,可以与TensorFlow 2.0进行结合使用。 总之,在TensorFlow 2.0中,将不再直接支持导入`tensorflow.contrib.learn`。如果你有特定的需求,需要找到替代的方法来实现你的目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值