使用autokeras实现结构化数据分类的完整指南

使用autokeras实现结构化数据分类的完整指南

autokeras autokeras 项目地址: https://gitcode.com/gh_mirrors/aut/autokeras

概述

autokeras是一个强大的自动化机器学习工具,能够帮助开发者快速构建高效的深度学习模型。本文将重点介绍如何使用autokeras中的StructuredDataClassifier来处理结构化数据的分类问题。

安装与环境准备

首先需要安装autokeras库,可以使用以下命令:

pip install autokeras

安装完成后,导入必要的库:

import pandas as pd
import tensorflow as tf
import autokeras as ak

快速入门示例

我们以经典的泰坦尼克号数据集为例,演示如何使用autokeras进行结构化数据分类。

数据准备

TRAIN_DATA_URL = "https://storage.googleapis.com/tf-datasets/titanic/train.csv"
TEST_DATA_URL = "https://storage.googleapis.com/tf-datasets/titanic/eval.csv"

train_file_path = tf.keras.utils.get_file("train.csv", TRAIN_DATA_URL)
test_file_path = tf.keras.utils.get_file("eval.csv", TEST_DATA_URL)

模型训练与评估

# 初始化结构化数据分类器
clf = ak.StructuredDataClassifier(
    overwrite=True,  # 覆盖之前的结果
    max_attempts=3    # 尝试3种不同的模型
)

# 使用训练数据训练分类器
clf.fit(
    train_file_path,  # 训练数据路径
    "survived",       # 标签列名
    epochs=10,        # 训练轮数
)

# 使用最佳模型进行预测
predicted_y = clf.predict(test_file_path)

# 评估模型性能
print(clf.evaluate(test_file_path, "survived"))

数据格式支持

autokeras的StructuredDataClassifier支持多种数据格式:

  1. CSV文件:直接使用文件路径
  2. pandas.DataFrame:处理内存中的数据框
  3. numpy.ndarray:处理数组数据
  4. tf.data.Dataset:使用TensorFlow的数据管道

示例:使用pandas.DataFrame

x_train = pd.read_csv(train_file_path)
y_train = x_train.pop("survived")

clf = ak.StructuredDataClassifier(overwrite=True, max_attempts=3)
clf.fit(x_train, y_train, epochs=10)

示例:使用numpy.ndarray

x_train = x_train.to_numpy()
y_train = y_train.to_numpy()

clf.fit(x_train, y_train, epochs=10)

示例:使用tf.data.Dataset

train_set = tf.data.Dataset.from_tensor_slices((x_train.astype(str), y_train))
test_set = tf.data.Dataset.from_tensor_slices((x_test.to_numpy().astype(str), y_test))

clf.fit(train_set, epochs=10)

列类型指定

autokeras可以自动推断列类型,也可以手动指定:

clf = ak.StructuredDataClassifier(
    column_names=["sex", "age", "fare", "class"],
    column_types={"sex": "categorical", "fare": "numerical"},
    max_attempts=10,
    overwrite=True,
)

验证数据设置

autokeras默认使用最后20%的训练数据作为验证集,也可以自定义:

使用验证比例

clf.fit(
    x_train,
    y_train,
    validation_split=0.15,  # 使用15%的数据作为验证集
    epochs=10,
)

使用自定义验证集

split = 500
x_val = x_train[split:]
y_val = y_train[split:]
x_train = x_train[:split]
y_train = y_train[:split]

clf.fit(
    x_train,
    y_train,
    validation_data=(x_val, y_val),  # 自定义验证集
    epochs=10,
)

高级自定义搜索空间

对于高级用户,可以使用AutoModel来自定义搜索空间:

input_node = ak.StructuredDataInput()
output_node = ak.StructuredDataBlock(categorical_encoding=True)(input_node)
output_node = ak.ClassificationHead()(output_node)
clf = ak.AutoModel(
    inputs=input_node, outputs=output_node, overwrite=True, max_attempts=3
)
clf.fit(x_train, y_train, epochs=10)

更细粒度的控制

input_node = ak.StructuredDataInput()
output_node = ak.CategoricalToNumerical()(input_node)
output_node = ak.DenseBlock()(output_node)
output_node = ak.ClassificationHead()(output_node)
clf = ak.AutoModel(
    inputs=input_node, outputs=output_node, overwrite=True, max_attempts=1
)
clf.fit(x_train, y_train, epochs=1)

导出最佳模型

可以将找到的最佳模型导出为Keras模型:

model = clf.export_model()
model.summary()

# 注意:numpy的object类型(混合类型)不被支持,需要转换为unicode
model.predict(x_train.astype(str))

最佳实践建议

  1. 数据预处理:虽然autokeras可以自动处理很多数据问题,但适当的数据清洗和预处理仍然能提高模型性能
  2. 试验次数:max_attempts参数控制尝试的模型数量,根据数据复杂度和计算资源合理设置
  3. epochs设置:可以设置为自适应(不指定)或根据数据量设置合理值
  4. 验证策略:对于小数据集,建议使用交叉验证而不是简单的验证集分割
  5. 特征工程:考虑添加领域知识相关的特征,可以提高模型性能

autokeras极大简化了结构化数据分类的建模过程,使开发者能够快速构建和部署高质量的机器学习模型,而无需深入了解深度学习的所有细节。

autokeras autokeras 项目地址: https://gitcode.com/gh_mirrors/aut/autokeras

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷豪创Isaiah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值