数据特征工程与相关概念解析
1. 特征计数与指标关系
在不同的特征计数情况下,指标通常会呈现出一种大致平稳的状态。大部分不同特征数量下,该指标近乎处于最优状态,表现为一个平稳的区间。在这个平稳区间内选择任意数量(N)的初始特征,所得到的指标结果相近。不过,在特定的选择搜索中,会存在一个特定的特征数量是最优的,但这个确切的数量往往取决于一些细微因素,例如随机初始化。有时还会出现这样的模式:存在一个特征数量范围是明显更优的,超过这个范围,指标会明显下降。
选择接近平稳区间起始位置的特征数量,可以减少所需合成数据的规模,但前提是要判断出平稳区间是否有明显的起始点。
示例代码
(pd.Series(best_feat.grid_scores_)
.plot(figsize=(10, 2.5), linewidth=0.75,
title="#Features vs. Accuracy on 2-Polynomial Data")
2. 间歇性事件分析
有些事件的发生本质上是不规则的。例如,盖革计数器测量辐射时,每当电离辐射达到阈值就会产生“咔哒”声(或其他离散信号);又如测量一片树林中每颗新芽出现的时间戳,事件的发生频率总体上与生长速率相关,但单个事件是随机分布的。新冠疫情期间,每个地缘政治区域特定日期的新诊断病例也属于类似的离散事件,它们间接定义了一个总体模式。
现有一个人工数据集,包含了五台仪器在2020年一整年记录的事件。事件记录精确到分钟,同一分钟内可能发生多个事件,且每台仪器的典型事件频率通常低于每分钟一次。这五台仪器分别命名为“A”到“E”。
数据集获取
数据集可从以下链接获取:
https://www.gnosis.cx/cleaning/events.sqlite
数据集示例
| Timestamp | Instrument |
|---|---|
| 2020 - 07 - 04 11:28:00 | A |
| 2020 - 07 - 04 11:29:00 | B |
| 2020 - 07 - 04 11:31:00 | C |
| 2020 - 07 - 04 11:34:00 | D |
| 2020 - 07 - 04 11:28:00 | A |
| 2020 - 07 - 04 11:34:00 | A |
任务要求
- 为了以数值形式合理描述每台仪器的行为,创建适量的合成特征。特征数量应控制在几十到几百个,而非几十万。将这些特征整理成一个整洁的数据框,用于后续的统计分析或机器学习技术。
- 尝试用文字描述或数学函数概括每台仪器的行为特点,同时尽可能说明描述的局限性和不确定性。
操作步骤
- 下载数据集:使用合适的工具(如Python的
requests库)从指定链接下载数据集。 - 数据读取:使用相应的数据库读取库(如Python的
sqlite3)读取数据集。 - 特征创建:根据数据特点,如事件发生的时间间隔、频率等,创建合成特征。
- 数据整理:将创建的特征整理成数据框。
- 行为概括:分析数据,用文字或数学函数描述每台仪器的行为,并说明局限性。
3. 事件频率分级
使用与上述相同的数据集,每台仪器测量特定时间戳发生的离散事件,时间序列覆盖2020年全年,事件精度为一分钟。有些分钟有多个事件(来自同一或不同仪器),有些则没有事件。
任务目标
根据事件频率将一年中的每一天分为“低”、“中”、“高”三个等级。需要分别对每台仪器和一整天的情况进行分级,并确定最适合的量化策略,该策略可能取决于每台仪器事件分布的不同。
操作步骤
- 数据加载:读取数据集。
- 数据分组:按天和仪器对数据进行分组。
- 频率计算:计算每天每台仪器以及一整天的事件频率。
- 量化策略确定:根据事件分布,选择合适的量化策略,如分位数法。
- 分级标注:根据量化策略对每一天进行分级标注。
注意事项
如果认为“低/中/高”的量化方式不适合某一台或多台仪器的事件分布,需要指出存在的问题或局限性,并尝试思考其他描述仪器行为的方法。
4. 合成特征创建的主题
4.1 特征拆分与组合
有时一个特征可能是由两个或多个基本特征组合而成的,可以将其轻松拆分并分别表示。反之,有时直接存在的少量组件可能更适合组合成一个特征。例如,日期时间值既可以拆分为年、月、时、分等多个组件,也可以作为一个单一的值。
4.2 参数空间变换
观察值所在的参数空间可以看作向量。初始观察值不一定构成观察向量的正交基(维度),通常对参数空间的基进行变换可以得到更适合统计和机器学习的维度。但需要注意的是,经过这种变换后的合成特征往往缺乏人类可理解的意义,只是纯粹的数值度量。
4.3 特征交互
有些合成特征源于初始特征与其值的定义域或其他初始特征的交互。例如,“热指数”是夏季温度和湿度的交互结果,“身体质量指数”是人体体重和身高的交互结果。有时,这种交互比直接测量的内容更有信息价值。使用多项式特征工程可以探索所有此类交互的空间,但可能会产生过多难以处理的特征,此时特征选择就显得尤为重要。
5. 相关概念解释
5.1 数据清洗与分析流程
在数据准备过程中,需要处理各种常见的数据格式。首先要将数据从不同来源转换为适合数据科学分析的整洁格式,这可能涉及到使用Python库、R工具或其他编程语言。在数据摄入阶段之后,要识别和修复数据中的问题,包括个别数据点的错误和系统性问题,如偏差、模式或趋势。接下来,可能需要进行数据填充(如值插补)和特征工程。
5.2 数据清洗自动化的思考
目前,数据清洗自动化是一个备受关注的话题。虽然一些商业云服务声称提供类似自动化数据清洗的功能,但实际上它们可能只是聚集了大量机器来尝试相同的模型、超参数和数据清洗管道,距离真正由机器主导分析决策还有差距。不过,随着技术的发展,自动化数据清洗可能会有更广阔的前景。
5.3 常用术语解释
| 术语 | 解释 |
|---|---|
| 准确率(Accuracy) | 在分类模型中,是常用的默认指标,等于正确答案的数量除以数据点的总数。 |
| 主动消息队列(ActiveMQ) | 开源消息代理,系统间消息聚合常用于数据科学分析。 |
| 美丽汤(BeautifulSoup) | Python库,用于解析和处理HTML和XML文档,常用于网页数据抓取。 |
| 大数据(Big data) | 随着计算和存储能力的提升,概念不断变化,通常指无法用传统简单工具处理的数据。 |
| 大端字节序(Big - endian) | 数据存储方式,最大量级的组件(通常是字节)存储在最后位置。 |
| BSON(Binary JSON) | 二进制编码的JSON文档序列化格式。 |
| caret(Classification And REgression Training) | R包,包含数据拆分、预处理、特征选择等多种功能。 |
| 卡珊德拉(Cassandra) | 开源分布式数据库系统,使用Cassandra查询语言(CQL)。 |
| 分类变量(Categorical variable) | 参考NOIR分类。 |
| chardet | Python模块,用于根据字节序列猜测文本编码。 |
| 奇美拉(Chimera) | 原指神话中组合多种动物元素的生物,现用于形容组合意外元素的事物。 |
| 列(Column) | 数据项的一种类型,通常有多行示例,有多种同义词,如特征、字段等。 |
| 逗号分隔值(CSV) | 列数据的一种表示形式,每行数据用换行符分隔,值用逗号分隔。 |
| 连续变量(Continuous variable) | 参考NOIR分类。 |
| 核心实用工具(Coreutils) | 一组用于处理文本和数据的命令行工具。 |
| 语料库(Corpus) | 语言学和自然语言处理中,指覆盖相似领域的大量文本。 |
| CouchDB | 开源文档型数据库,内部数据以JSON格式表示。 |
| CrateDB | 开源文档型数据库,强调实时性能。 |
| 维度灾难(Curse of dimensionality) | 随着维度增加,参数空间规模增长更快,模型在数据稀疏区域的预测能力较差。 |
| 数据工件(Data artifact) | 由于硬件或软件错误导致的数据意外改变。 |
| 数据框(Data frame) | 多种编程语言和软件库提供的表格数据抽象,有多种实现库。 |
| 数据集(Dataset) | 相关数据的集合,可能是单个表格或多个相关表格。 |
| 非规范化(Denormalization) | 数据库中复制数据以提高查询性能,但可能引入数据完整性问题。 |
| DMwR(Data Mining with R) | R包,包含与数据挖掘相关的函数和数据。 |
| DOM(Document Object Model) | 用于处理XML或HTML文档的语言中立API。 |
| 领域特定知识(Domain - specific knowledge) | 数据科学中,对数据重要性的判断有时依赖于对数据所描述领域的知识。 |
| 急切性(Eagerness) | 编程中,急切程序会一次性处理所有数据。 |
| 弹性搜索(Elasticsearch) | 基于Lucene库的搜索引擎,包含文档型数据库。 |
| 字节序(Endianness) | 计算机中数字存储的顺序,有大端和小端之分。 |
| F1分数(F1 Score) | 分类模型中,综合召回率和精确率的平衡指标。 |
| 特征(Feature) | 列的同义词,强调在机器学习算法中的应用。 |
| 字段(Field) | 列的同义词,关注数据存储格式。 |
| Fuzzy | Python库,用于分析英语文本的语音相似性。 |
| GDBM(GNU dbm) | 开源键值存储系统库。 |
| 通用十进制算术规范(General Decimal Arithmetic Specification) | 任意精度十进制算术和数值表示的标准,Python的 decimal 模块是其实现。 |
| Gensim | 开源Python库,用于自然语言处理中的无监督主题建模。 |
| 吉字节(Gibibyte,GiB) | 用于准确描述计算机存储容量的单位。 |
| ggplot2 | R库,尝试将《图形语法》的概念转化为具体API。 |
| 通配符(Glob) | 简单的模式匹配语言,常用于文件名匹配。 |
| GQL(Graph Query Language) | 用于查询图数据库的待标准语言。 |
| Gremlin | 图查询语言,强调函数式编程风格。 |
| 停机问题(Halting problem) | 计算理论中著名的不可解问题。 |
| h5py | Python库,用于处理HDF5格式的分层数据集。 |
| HDF Compass | 开源GUI工具,用于查看HDF5数据文件内容。 |
| 分层数据格式(HDF5) | 开源文件格式,支持大型、复杂、异构数据,采用分层结构。 |
| 超参数(Hyperparameter) | 机器学习模型中,影响模型性能的预配置参数。 |
| 幂等性(Idempotent) | 函数多次调用其自身输出结果不变的特性。 |
| Imager | R库,用于读取、写入图像并进行分析处理,可处理视频。 |
| imbalanced - learn | 开源Python库,用于敏感过采样数据,实现了SMOTE等算法。 |
| 插补(Imputation) | 用可能的值替换缺失数据点,以便进行机器学习或统计分析。 |
| 间隔变量(Interval variable) | 参考NOIR分类。 |
| ISO - 8601 | 国际标准的日期和时间表示格式。 |
| jq | 灵活强大的命令行工具,用于过滤、搜索和格式化JSON数据。 |
| JSON(Javascript Object Notation) | 语言无关、人类可读的数据结构和标量值表示格式。 |
| Jupyter | 开源库,支持多种编程语言,用于创建、运行和编辑笔记本。 |
| Kafka | 开源流处理器,系统间消息聚合可用于数据科学分析。 |
| Kdb + | 列存储数据库,用于高频交易。 |
| 懒惰性(Laziness) | 编程中,懒惰程序仅在需要时执行单个转换。 |
| LMDB(Lightning Memory - Mapped Database) | 开源键值存储系统库。 |
| 词形还原(Lemmatization) | 自然语言处理中,将单词还原为其语法根形式,考虑上下文。 |
| 小端字节序(Little - endian) | 数据存储方式,最大量级的组件(通常是字节)存储在最前位置。 |
| MariaDB | 开源关系型数据库管理系统,与MySQL兼容,增加了一些特性。 |
| Matplotlib | 强大的Python绘图库。 |
| 测量(Measurement) | 列的同义词,常用于描述经验观察数据。 |
| Memcached | 用于缓存或代理服务器响应的内存键值关联数组软件。 |
| Metaphone | 英语单词语音规范化算法。 |
| Mojibake | 由于编码错误导致的无意义文本。 |
| MonetDB | 开源列导向数据库管理系统,支持多种查询语言。 |
| MongoDB | 流行的文档型数据库管理系统,使用JSON存储数据。 |
| MySQL | 广泛使用的开源关系型数据库管理系统。 |
| Neo4j | 开源图数据库和数据库管理系统。 |
| netcdf4 - python | Python接口,用于访问NetCDF C库。 |
| 网络通用数据格式(NetCDF) | 支持数组导向科学数据的创建、访问和共享的软件库和数据格式。 |
| NLTK(Natural Language Toolkit) | Python自然语言处理工具套件。 |
| Node.js | 开源JavaScript解释器,可用于命令行脚本和服务器进程。 |
| 名义变量(Nominal variable) | 参考NOIR分类。 |
| NOIR(Nominal, Ordinal, Interval, Ratio) | 用于记忆不同特征类型的缩写,分别代表名义、有序、间隔、比率变量。 |
| NumPy | 开源Python库,用于多维数组的快速向量化计算。 |
| 观察(Observation) | 行的同义词。 |
| 本体论(Ontology) | 哲学中研究“存在”的概念,数据科学中用于描述实体的类、特征和关系。 |
| 有序变量(Ordinal variable) | 参考NOIR分类。 |
| OrientDB | 开源多模型数据库管理系统,支持多种查询语言。 |
| 正交基(Orthonormal basis) | 高维空间中,用于表示观察点的相互垂直的单位向量。 |
| Pandas | 广泛使用的Python数据框库,擅长处理时间序列数据。 |
| 参数空间(Parameter space) | 观察值所在的N维空间,默认向量基与特征对应。 |
| Parquet | 开源列导向数据存储格式,在Hadoop生态系统中起源,广泛支持多种编程语言。 |
| PDF(Portable Document Format) | 跨平台、跨设备准确表示文档外观的格式。 |
| Pillow | Python图像处理库,可读取、写入和处理多种图像格式。 |
| Poppler | 开源PDF查看和处理库,包含多个命令行工具。 |
| PostgreSQL | 广泛使用的开源关系型数据库管理系统,支持自定义特性和数据类型。 |
| 精确率(Precision) | 分类模型中,预测为正例的样本中真正为正例的比例。 |
| PyTables | Python库,用于处理HDF5格式的分层数据集。 |
| 查询规划器(Query planner) | 数据库管理系统中,用于规划查询执行步骤的组件。 |
| R Markdown | 用于文学编程的格式和技术,代码和文档可自由穿插。 |
| RabbitMQ | 开源消息代理,系统间消息聚合可用于数据科学分析。 |
| 比率变量(Ratio variable) | 参考NOIR分类。 |
| 召回率(Recall) | 分类模型中,真正为正例的样本被正确预测的比例。 |
| 记录(Record) | 行的同义词。 |
| Redis(Remote Dictionary Server) | 开源内存键值数据库,支持多种数据类型和数据结构。 |
| 关系型数据库管理系统(RDBMS) | 基于关系模型存储数据的系统,支持SQL查询语言。 |
| 请求(Requests) | 功能齐全的Python HTTP访问库。 |
| REST(REpresentational State Transfer) | 描述HTTP服务器和客户端交互模式的软件风格。 |
| rhdf5 | R库,用于处理HDF5格式的分层数据集。 |
| rjson | R库,用于处理JSON数据。 |
| ROSE(Random Over - Sampling Examples) | R包,用于处理类别不平衡问题的随机过采样。 |
| 行(Row) | 包含多个命名数据项的集合,与列共同构成表格数据。 |
| rvest | R包,用于从HTML网页中抓取和提取数据。 |
| 样本(Sample) | 行的同义词。 |
| Scikit - learn | 广泛使用的开源Python机器学习和数据科学库。 |
| Scipy.stats | Python模块,实现多种概率分布和统计函数。 |
| Scrapy | Python库,用于爬取和分析网页集合。 |
| Seaborn | 基于Matplotlib的Python数据可视化库。 |
| SeqKit | 用于处理FASTA和FASTQ格式文件的工具包。 |
| 有符号整数(Signed integer) | 计算机中用特定位数表示的整数,一位用于表示符号。 |
| Solr | 基于Lucene库的搜索引擎,包含文档型数据库。 |
| spaCy | 开源高级自然语言处理软件库。 |
| SPARQL协议和RDF查询语言 | 用于查询RDF(资源描述框架)或“语义网”的查询语言。 |
| 球化(Sphering) | 数据分解后的归一化操作,与白化同义。 |
| SQLAlchemy | Python库,提供关系型数据库表和面向对象接口之间的映射。 |
| SQLite | 小型、快速、自包含的SQL数据库引擎。 |
| 状态机(State machine) | 基于特定输入在有限状态或节点之间转换的计算模型。 |
| STDOUT / STDERR / STDIN | Unix命令行中,分别表示标准输出、标准错误和标准输入。 |
| 词干提取(Stemming) | 自然语言处理中,将单词还原为其语法根形式,不考虑上下文。 |
| 结构化数据 | 通常所说的“非结构化数据”更准确的表述是“松散结构化”或“半结构化”,文本数据至少按单词顺序有一定结构。 |
| 制表符分隔值(TSV) | 列数据的一种表示形式,用制表符作为分隔符。 |
| Tabula | 用于从PDF文档中提取表格数据的工具。 |
| 分类学(Taxonomy) | 本体论的一个特殊方面,描述实体类别之间的层次关系。 |
| tibble | R库,实现数据框抽象,尝试简化操作。 |
| Tidyverse | R包集合,共享API设计哲学,用于将数据整理成整洁形式。 |
| 元组(Tuple) | 行的同义词。 |
| 无符号整数(Unsigned integer) | 计算机中用特定位数表示的整数,不保留符号位。 |
| 变量(Variable) | 列的同义词,常用于考虑列之间的方程关系。 |
| Web 0.5 | 相对于Web 2.0的概念,指早期静态、紧凑、文本导向的网页。 |
| 白化(Whitening) | 数据分解后的归一化操作,与球化同义。 |
| XML(eXtensible Markup Language) | 用于表示文档和定义方言的标记语言,具有严格结构。 |
| Xpdf | 开源PDF查看和处理库。 |
| YAML | 人类可读和可写的格式,可表示多种数据结构和数据类型。 |
6. 数据处理流程总结
graph LR
A[数据摄入] --> B[数据清洗]
B --> C[特征工程]
C --> D[模型选择与训练]
D --> E[模型评估与优化]
这个流程展示了从数据摄入到最终模型评估与优化的整个过程。在数据摄入阶段,需要将数据从各种来源转换为适合分析的格式;数据清洗阶段用于识别和修复数据中的问题;特征工程则是创建和选择合适的特征;模型选择与训练阶段根据数据和问题选择合适的模型并进行训练;最后,对训练好的模型进行评估和优化,以提高其性能。
7. 分类模型指标详解
7.1 准确率(Accuracy)
准确率是分类模型中常用的默认指标,其计算方式为正确答案的数量除以数据点的总数。例如,有一个如下的混淆矩阵:
| Predicted/Actual | Human | Octopus | Penguin |
| — | — | — | — |
| Human | 5 | 0 | 2 |
| Octopus | 3 | 3 | 3 |
| Penguin | 0 | 1 | 11 |
总共有 28 个生物体的观测值,其中 19 个被正确分类,因此准确率约为 68%(19 / 28)。
7.2 精确率(Precision)
精确率也称为“正预测值”,是预测为正例的样本中真正为正例的比例。对于上述混淆矩阵,以“Human”类别为例,有 8 个真正的“Human”,其中 5 个被正确识别,同时有 2 个非“Human”也被误识别为“Human”,那么“Human”类别的精确率为 5 / (5 + 2) ≈ 0.71。通常,模型的整体精确率是对每个标签的精确率进行加权或不加权平均得到的。
7.3 召回率(Recall)
召回率也称为“灵敏度”,是真正为正例的样本被正确预测的比例。对于“Human”类别,有 8 个真正的“Human”,其中 5 个被正确识别,3 个未被识别,那么“Human”类别的召回率为 5 / 8 = 0.625。模型的整体召回率通常也是对每个标签的召回率进行加权或不加权平均得到的。
7.4 F1 分数(F1 Score)
F1 分数综合了召回率和精确率,避免了某些模型中出现的极端情况,是一个较为平衡的指标。它的计算公式与召回率和精确率相关,能更全面地评估模型的性能。
指标对比表格
| 指标 | 定义 | 计算方式 |
|---|---|---|
| 准确率 | 正确答案的数量除以数据点的总数 | 正确分类数 / 总数据点数 |
| 精确率 | 预测为正例的样本中真正为正例的比例 | 真正例数 / (真正例数 + 假正例数) |
| 召回率 | 真正为正例的样本被正确预测的比例 | 真正例数 / (真正例数 + 假反例数) |
| F1 分数 | 综合召回率和精确率的平衡指标 | 与召回率和精确率相关计算 |
8. 数据库相关知识
8.1 关系型数据库管理系统(RDBMS)
RDBMS 是基于 E. F. Codd 在 1970 年开发的关系模型来存储数据的系统。数据存储在表格中,每行构成一个值的元组,列名作为这些值的键。“关系”一词指的是一个表中的数据可以通过声明外键关系和/或在查询语法中执行连接操作与其他表中的数据相关联。常见的 RDBMS 包括 PostgreSQL、MySQL、SQLite 等,它们都支持 SQL 查询语言,有时还会有与额外功能或数据类型相关的可选扩展语法。
8.2 文档型数据库
文档型数据库如 CouchDB、MongoDB 等,以 JSON 或类似格式存储数据。它们通常更适合处理非结构化或半结构化数据,数据以文档的形式存储,文档之间可以有层次关系。例如,MongoDB 使用 JSON 文档进行查询和响应,其查询语言反映了数据的层次结构。
8.3 图数据库
图数据库如 Neo4j 等,用于存储和处理图结构的数据。图由节点和边组成,节点表示实体,边表示实体之间的关系。图数据库使用专门的查询语言,如 Gremlin 或 Cypher(GQL 基于 Cypher 开发),可以高效地查询图中的节点和关系。
数据库类型对比表格
| 数据库类型 | 特点 | 常见示例 | 查询语言 |
|---|---|---|---|
| 关系型数据库管理系统(RDBMS) | 基于关系模型,数据存储在表格中,支持 SQL 查询 | PostgreSQL、MySQL、SQLite | SQL(可能有扩展语法) |
| 文档型数据库 | 以 JSON 或类似格式存储数据,适合非结构化数据 | CouchDB、MongoDB | 各自的查询语言(如 MongoDB 有独特查询语言) |
| 图数据库 | 存储和处理图结构数据,由节点和边组成 | Neo4j | Gremlin、GQL(基于 Cypher) |
9. 自然语言处理相关工具
9.1 NLTK(Natural Language Toolkit)
NLTK 是 Python 中用于自然语言处理的一套工具,包含众多语料库、用于词法分析的工具、命名实体识别工具、词性标注器、词干提取器和词形还原器等,能满足自然语言处理的多种需求。
9.2 spaCy
spaCy 是一个开源的高级自然语言处理软件库,专注于生产使用,并与深度学习框架集成。它可以高效地处理大规模文本数据,提供了丰富的语言模型和工具。
9.3 Gensim
Gensim 是一个开源的 Python 库,主要用于自然语言处理中的无监督主题建模。它实现了 word2vec 算法及其相关变体,可用于文本的向量表示和主题分析。
自然语言处理工具对比表格
| 工具 | 功能 | 特点 |
|---|---|---|
| NLTK | 包含语料库、词法分析、命名实体识别等多种工具 | 功能全面,适合初学者学习和研究 |
| spaCy | 高级自然语言处理,与深度学习框架集成 | 高效处理大规模文本,适合生产环境 |
| Gensim | 无监督主题建模,实现 word2vec 算法 | 专注于主题建模和文本向量表示 |
10. 数据存储与处理格式
10.1 HDF5(Hierarchical Data Format)
HDF5 是一种开源的文件格式,支持大型、复杂、异构数据。它采用分层结构,允许在文件中嵌套组织数据,数据集是层次结构的“叶子”。HDF5 文件可以包含关于每个数据集或组的任意和特定领域的元数据。由于许多 HDF5 文件包含的数据量远远超过计算机内存,处理 HDF5 的工具通常提供惰性读取内容的方式,使大部分数据仅在需要时才从磁盘读取。
10.2 Parquet
Apache Parquet 是一种开源的列导向数据存储格式,起源于 Hadoop 生态系统,但在其他编程语言中也得到广泛支持。它具有高效的压缩和存储性能,适合大规模数据的存储和处理。
10.3 JSON(Javascript Object Notation)
JSON 是一种语言无关、人类可读的数据结构和标量值表示格式,广泛用于数据存储和服务间通信。它简单易懂,易于解析和生成,在 Web 开发和数据交换中应用广泛。
数据存储格式对比表格
| 格式 | 特点 | 适用场景 |
|---|---|---|
| HDF5 | 支持大型、复杂、异构数据,分层结构,可包含元数据 | 科学研究、大规模数据存储 |
| Parquet | 列导向,高效压缩和存储,适合大规模数据处理 | 大数据分析、分布式计算 |
| JSON | 语言无关,人类可读,用于数据存储和通信 | Web 开发、数据交换 |
11. 数据处理中的其他概念
11.1 字节序(Endianness)
字节序指的是计算机中数字存储的顺序,通常分为大端字节序(Big - endian)和小端字节序(Little - endian)。大端字节序中,最大量级的组件(通常是字节)存储在最后位置;小端字节序中,最大量级的组件存储在最前位置。例如,存储整数 1,908,477,236 时,大端字节序和小端字节序的存储方式不同。
11.2 幂等性(Idempotent)
幂等性是数学、计算机科学和编程中的一个有用概念,指的是对同一个函数的输出再次调用该函数,结果将保持不变。这与数学中的吸引子概念相关。
11.3 停机问题(Halting problem)
停机问题是计算理论中最著名的结果之一,由 Alan Turing 在 1936 年证明,不存在一个通用算法可以回答“这个程序是否会终止”的问题。在某些情况下,说一个给定的任务“等同于停机问题”意味着该任务无法解决。
概念解释列表
- 字节序 :影响数字在计算机中的存储和读取方式,不同的系统和库可能支持不同的字节序。
- 幂等性 :在编程中,幂等操作可以避免重复操作带来的问题,提高程序的稳定性。
- 停机问题 :提醒开发者某些问题可能是不可解的,在设计算法和程序时需要谨慎考虑。
12. 总结与数据处理流程回顾
12.1 数据处理流程总结
整个数据处理过程可以总结为以下几个关键步骤:
1. 数据摄入 :将数据从各种来源转换为适合分析的格式。
2. 数据清洗 :识别和修复数据中的问题,包括个别数据点的错误和系统性问题。
3. 特征工程 :创建和选择合适的特征,以提高模型的性能。
4. 模型选择与训练 :根据数据和问题选择合适的模型并进行训练。
5. 模型评估与优化 :对训练好的模型进行评估,根据评估结果进行优化。
完整数据处理流程 mermaid 图
graph LR
A[数据摄入] --> B[数据清洗]
B --> C[特征工程]
C --> D[模型选择与训练]
D --> E[模型评估与优化]
E --> F[结果应用]
这个流程涵盖了从数据获取到最终结果应用的整个过程,每个步骤都相互关联,对最终的数据分析和建模结果有着重要影响。在实际应用中,需要根据具体的数据和问题,灵活运用各种工具和技术,不断优化处理流程,以获得更好的结果。
超级会员免费看

被折叠的 条评论
为什么被折叠?



