使用 Keras 进行分类

发布日期:2026-07-12 03:28:04   来源 : 杭州电子商务研究院    浏览量 :24
杭州电子商务研究院 发布日期:2026-07-12 03:28:04  
24

介绍

深度学习是当今数据科学和人工智能领域最热门的话题之一。它是机器学习的一个分支,由一组基于数据学习表示的算法组成。深度学习已应用于当今一些最令人兴奋的技术创新,如机器人技术、自动驾驶汽车、计算机视觉、自然语言处理、图像识别等等。

目前有很多深度学习库,但最受欢迎的是 TensorFlow、Keras 和 PyTorch。在本指南中,我们将重点介绍 Keras。

Keras 是一个高级神经网络 API,用 Python 编写,可以在 TensorFlow、CNTK 或 Theano 上运行。它的开发重点是实现快速实验。使用 Keras 的优势在于它注重用户友好性、模块化和可扩展性。

在本指南中,我们将重点介绍如何使用 Keras 库构建分类模型。如果您正在寻找有关如何使用 Keras 进行回归的指南,请参阅我之前的指南(/guides/regression-keras/)

使用 Keras 进行分类

分类是一种用于预测分类标签的监督式机器学习算法。分类的一些有用示例包括预测客户是否会流失、将电子邮件归类为垃圾邮件或银行贷款是否会违约。

我们将要介绍的深度学习神经网络的基本架构由三个主要部分组成。

  1. 输入层:这是输入训练观测值的地方。预测变量的数量也通过神经元在这里指定。

  2. 隐藏层:这些是输入层和输出层之间的中间层。深度神经网络在此组件中学习数据中涉及的关系。

  3. 输出层:这是从前两层发生的事情中提取最终输出的层。对于回归问题,输出层将有一个神经元。

问题陈述

糖尿病是一种严重的健康问题,会导致血糖升高。如果糖尿病得不到治疗和诊断,就会引发许多并发症。

本指南的目的是建立一个分类模型来检测糖尿病。我们将使用包含 768 个观测值和 9 个变量的糖尿病数据集,如下所述:

  • 怀孕 - 怀孕次数
  • 葡萄糖 - 血浆葡萄糖浓度
  • 舒张压 - 舒张压(毫米汞柱)
  • 三头肌 - 皮褶厚度(毫米)
  • 胰岛素 - 小时血清胰岛素 (mu U/ml)
  • bmi——基础代谢率(体重(千克)/身高(米))
  • dpf - 糖尿病谱系功能
  • age - 年龄(岁)
  • 糖尿病 - 1 表示患有糖尿病,0 表示没有患糖尿病。这是目标变量。

另外,所选的分类算法是逻辑回归模型,它是最古老和最广泛使用的算法之一。

评估指标

我们将使用准确度来评估模型的性能,准确度表示正确分类的案例的百分比。

从数学上来说,对于二元分类器,其表示为准确率 = (TP+TN)/(TP+TN+FP+FN),其中

  • 真正例 (TP) 是指带有正标签的案例,且被正确归类为正例。
  • 真阴性(TN)是指带有阴性标签的案例,但被正确归类为阴性。
  • 假阳性(FP)是指带有负标签的案例被错误地归类为阳性。
  • 假阴性(FN)是指具有正标签但被错误地归类为负标签的案例。

步骤

以下是使用 Keras 实现回归模型时通常遵循的步骤。

步骤 1 - 加载所需的库和模块

第 2 步 - 加载数据并执行基本数据检查

步骤 3——为特征和响应变量创建数组

步骤 4 - 创建训练和测试数据集

第 5 步 - 定义、编译和拟合 Keras 分类模型

步骤 6 - 预测测试数据并计算评估指标

以下部分将介绍这些步骤。

步骤 1 - 加载所需的库和模块

      # Import required libraries
import pandas as pd
import numpy as np 
import matplotlib.pyplot as plt
import sklearn

# Import necessary modules
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from math import sqrt

# Keras specific
import keras
from keras.models import Sequential
from keras.layers import Dense
from keras.utils import to_categorical
    

第 2 步 - 读取数据并执行基本数据检查

第一代码将数据读入为 pandas 数据框,而第二行代码打印形状 - 9 个变量的 768 个观测值。第三行给出数值变量的汇总统计信息。数据中没有缺失值,因为所有变量的“计数”均为 768,这等于数据集中的记录数。

      df = pd.read_csv('diabetes.csv') 
print(df.shape)
df.describe()
    
      (768, 9)
    
怀孕 葡萄糖 舒张压 三头肌 胰岛素 体重指数 DPPF 年龄 糖尿病
数数 768.000000 768.000000 768.000000 768.000000 768.000000 768.000000 768.000000 768.000000 768.000000
意思是 3.845052 120.894531 69.105469 20.536458 79.799479 31.992578 0.471876 33.240885 0.348958
标准 3.369578 31.972618 19.355807 15.952218 115.244002 7.884160 0.331329 11.760232 0.476951
分钟 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.078000 21.000000 0.000000
25% 1.000000 99.000000 62.000000 0.000000 0.000000 27.300000 0.243750 24.000000 0.000000
50% 3.000000 117.000000 72.000000 23.000000 30.500000 32.000000 0.372500 29.000000 0.000000
75% 6.000000 140.250000 80.000000 32.000000 127.250000 36.600000 0.626250 41.000000 1.000000
最大限度 17.000000 199.000000 122.000000 99.000000 846.000000 67.100000 2.420000 81.000000 1.000000

步骤 3-为特征和响应变量创建数组。

第一代码创建了目标变量的对象,而第二行代码给出了排除目标变量“糖尿病”后的所有特征的列表。

第三通过在 0 和 1 之间缩放来对预测变量进行标准化。这是为了消除预测变量的单位和幅度对建模过程的影响。

第四显示标准化数据的摘要。目标变量保持不变。

      target_column = ['diabetes'] 
predictors = list(set(list(df.columns))-set(target_column))
df[predictors] = df[predictors]/df[predictors].max()
df.describe()
    
怀孕 葡萄糖 舒张压 三头肌 胰岛素 体重指数 DPPF 年龄 糖尿病
数数 768.000000 768.000000 768.000000 768.000000 768.000000 768.000000 768.000000 768.000000 768.000000
意思是 0.226180 0.607510 0.566438 0.207439 0.094326 0.476790 0.194990 0.410381 0.348958
标准 0.198210 0.160666 0.158654 0.161134 0.136222 0.117499 0.136913 0.145188 0.476951
<font style="vertical-align: inhe
以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据