一文详解人工智能特征工程--数据理解
大模型开发/技术交流
- LLM
10月23日444看过
前言
在前面几篇文章当中,笔者为大家讲解了人工智能中关于正则化技术的大部分内容,希望读者能有所理解,有所收获。俗话说,要想模型效果好,数据处理少不了,今天,笔者就带大家一起来学习了解一下人工智能(尤其是多特征分类建模等任务)中对数据和特征进行处理进而优化模型的技术--特征工程。
一、定义和简介
什么是特征工程 :
特征工程是机器学习和人工智能领域中的一个重要概念,它涉及从原始数据中提取和构建对模型预测任务有用的特征。特征工程的目的是使模型能够更有效地学习和预测,提高模型的性能,是利用数据领域的相关知识来创建能够使机器学习算法和深度学习算法达到最佳性能的特征的过程。
在业界一直流传着这么一句话 : 数据和特征决定了机器学习的上限,模型和算法只是逼近这个上限
二、类型与方法
下面是我们特征工程的一些关键步骤和方法:
首先需要导入需要的依赖,数据集,配置好环境
import pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns# 加载数据data = pd.read_csv('/home/workspace/output/Date/测试集A/train.csv')
数据理解
在开始特征工程之前,首先需要对数据进行探索性分析,了解数据的分布、类型、范围和潜在的关联性。下面是一些我们会在模型中常见常用的数据理解过程和方法:
-
数据探索:
-
-
数据概览:检查数据集的大小(行数和列数)、数据类型和数据集的简单描述。
-
统计摘要:生成统计摘要,包括均值、中位数、标准差、最小值和最大值。
-
# 数据概览print(data.head()) # 打印前五行数据print(data.describe()) # 打印统计摘要print(data.info()) # 打印数据集的信息,包括每列的数据类型和非空值数量
-
数据可视化(使用Python的Pandas和Matplotlib库来探索和可视化数据集:):
-
-
分布图:绘制直方图来查看特征的分布情况。
-
箱线图:检查数据的异常值和分布的形状。
-
散点图:分析特征之间的关系。
-
# 数据可视化# 绘制特征的分布图for column in data.columns[:-1]: # 假设最后一列是目标变量plt.figure(figsize=(10, 6))sns.histplot(data[column], kde=True)plt.title(f'Distribution of {column}')plt.xlabel(column)plt.ylabel('Frequency')plt.show()
-
数据质量评估:
-
-
缺失值:确定哪些特征包含缺失值,以及缺失值的数量。
-
异常值:识别数据中的异常值或离群点。
-
一致性:检查数据是否一致,例如,日期字段是否包含无效日期。
-
# 箱线图检查异常值plt.figure(figsize=(10, 6))sns.boxplot(data=data.iloc[:, :-1]) # 假设最后一列是目标变量plt.title('Boxplot for each feature')plt.show()# 散点图分析特征之间的关系sns.pairplot(data, hue=data.columns[-1]) # 使用目标变量作为颜色编码plt.show()# 缺失值分析print(data.isnull().sum()) # 打印每列的缺失值数量# 异常值分析# 假设数据集中的数值特征遵循正态分布for column in data.columns[:-1]: # 假设最后一列是目标变量if data[column].dtype == 'float64' or data[column].dtype == 'int64':mean = data[column].mean()std = data[column].std()outliers = data[(data[column] < (mean - 3 * std)) | (data[column] > (mean + 3 * std))]print(f'Outliers in {column}:')print(outliers)
-
特征关系分析:
-
-
相关性分析:计算特征之间的相关系数,了解特征之间的关系。
-
多变量分析:分析多个变量之间的关系,例如使用主成分分析(PCA)。
-
# 特征关系分析# 例如,使用散点图矩阵查看特征之间的关系和目标变量sns.pairplot(data, hue=data.columns[-1]) # 使用目标变量作为颜色编码plt.show()
-
目标变量分析:
-
-
目标变量分布:检查目标变量的分布,了解其是否平衡。
-
目标变量与特征的关系:分析目标变量与各个特征之间的关系。
-
# 目标变量分析sns.countplot(x=data.columns[-1], data=data) # 假设最后一列是目标变量plt.title('Distribution of Target Variable')plt.show()
-
特征重要性评估:
-
-
特征影响:评估每个特征对模型性能的影响。
-
-
数据集划分:
-
-
训练集和测试集:将数据集划分为训练集和测试集,以便在训练后评估模型。
-
# 数据集划分from sklearn.model_selection import train_test_split# 假设最后一列是目标变量X = data.iloc[:, :-1]y = data.iloc[:, -1]X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
-
文档和知识:
-
-
领域知识:结合领域知识理解数据,这有助于识别数据中的重要特征和模式。
-
# 文本数据和分类数据的处理# 例如,处理文本数据# data['text_feature'] = data['text_feature'].str.lower() # 转换为小写# data['text_feature'] = data['text_feature'].str.replace(r'[^\w\s]','',) # 去标点
实在不理解的同学,那么就 ,上例子!
三、实例讲解数据理解
你系一位侦探,刚刚接到了一个复杂的案件。你的任务是解开谜团,找到真相。在这个过程中,你需要收集线索、分析证据、理解嫌疑人的动机,并最终确定谁是罪犯。这就像是数据理解在人工智能特征工程中的角色。
1. 数据探索:
这就像是你在案件现场收集初步信息。你四处查看,记录下一切可能有用的细节:房间的布局、物品的位置、可能的入侵路径等。在数据中,这相当于查看数据集的前几行,了解数据的基本结构和类型。
2. 数据可视化:
你制作了现场的草图和犯罪时间线,帮助更好地理解发生了什么。这就像是绘制数据的图表和直方图,以直观地展示数据的分布和关系。
3. 数据质量评估:
你检查收集到的证据,确定它们是否可靠。例如,一个关键的监控录像是否清晰到足以识别嫌疑人?这就像是检查数据集中的缺失值和异常值,并决定如何处理它们。
4. 数据清洗:
你发现一些证据可能是伪造的,或者与案件无关。你需要剔除这些无用的证据,只保留最相关的信息。这就像是数据清洗过程中的缺失值填充和异常值处理。
5. 特征关系分析:
你开始分析不同线索之间的关系。例如,嫌疑人的动机是否与犯罪现场的证据相符?这就像是分析数据特征之间的相关性,以确定哪些特征可能对预测目标变量最有用。
6. 目标变量分析:
你特别关注案件的主要目标——确定谁是罪犯。你回顾了所有指向嫌疑人的证据,试图构建一个有力的案件。在数据中,这相当于分析目标变量的分布,了解它是如何与其他特征相关的。
7. 数据集划分:
你决定将证据分成两组:一组用于构建你的案件理论,另一组用于验证你的理论。这就像是将数据集分为训练集和测试集,训练集用于建立模型,测试集用于评估模型的性能。
8. 文档和知识:
你回顾了类似案件的档案,希望从中找到线索。这就像是利用领域知识来理解数据,比如知道某个特定的模式通常与某种类型的犯罪相关联。
通过这些步骤,你能够构建一个全面的案件理论,并确定最有可能的嫌疑人。同样,数据科学家通过数据理解阶段的分析,能够构建一个有效的特征集,为构建机器学习模型打下坚实的基础。
总之,在我们平时的项目中,数据理解是一个迭代的过程,所以可能需要多次重复上述步骤。此外,数据理解的深度和广度直接影响到特征工程的质量和最终模型的性能。
代码应用:
可根据你自己的实际数据集的结构和项目或者任务需求调整这些代码,理解之后其实都大差不差。
三、Reference
以上就是笔者关于人工智能特征工程中的数据理解技术的讲解,欢迎大家点赞,收藏,交流和关注,O(∩_∩)O谢谢!
————————————————
版权声明:本文为稀土掘金博主「念旧_」的原创文章
原文链接:https://juejin.cn/post/7418088165925224502
如有侵权,请联系千帆社区进行删除
评论