首页 > 其他分享 >机器学习_特征工程

机器学习_特征工程

时间:2024-05-30 09:29:11浏览次数:21  
标签:机器 features 示例 特征 feature 学习 test sklearn

特征工程是机器学习中一个非常重要的步骤,它直接影响模型的性能和准确性。特征工程的目标是从原始数据中提取、转换和选择适当的特征,使得机器学习算法可以更好地学习和做出预测。以下是特征工程的原理、方法和用法的详细讲解。

特征工程的原理

特征工程的原理在于将原始数据转换成更适合机器学习算法处理的形式。好的特征能够捕捉数据中的模式和规律,帮助模型更好地进行预测。特征工程主要包括以下几个方面:

  1. 特征提取:从原始数据中提取有用的信息。
  2. 特征转换:将特征转换成适合模型使用的形式。
  3. 特征选择:选择对模型有用的特征,去除冗余和无用的特征。

特征工程的方法

1. 特征提取
  • 数值特征提取:从数值型数据中提取有意义的特征。

    • 示例:在时间序列数据中,可以提取均值、方差、最大值、最小值等统计特征。
  • 类别特征提取:从类别型数据中提取特征。

    • 示例:使用独热编码(One-Hot Encoding)将类别型特征转换成数值特征。
2. 特征转换
  • 标准化(Standardization):将特征缩放到均值为0,标准差为1的标准正态分布。

    • 示例:sklearn.preprocessing.StandardScaler
  • 归一化(Normalization):将特征缩放到特定范围(通常是[0, 1])。

    • 示例:sklearn.preprocessing.MinMaxScaler
  • 对数变换(Log Transformation):对数变换可以减小数据的尺度,尤其适用于长尾分布的数据。

    • 示例:np.log1p(data)
  • Box-Cox变换:用于处理非正态分布的数据,使其更接近正态分布。

    • 示例:scipy.stats.boxcox(data)
3. 特征选择
  • 过滤法(Filter Method):根据统计指标选择特征,如方差、相关系数、卡方检验等。

    • 示例:sklearn.feature_selection.SelectKBest
  • 包装法(Wrapper Method):通过模型训练选择特征,如递归特征消除(RFE)。

    • 示例:sklearn.feature_selection.RFE
  • 嵌入法(Embedded Method):特征选择过程由算法自身完成,如 Lasso 回归、决策树等。

    • 示例:sklearn.linear_model.Lasso

特征工程的用法

下面是一个特征工程的实际例子,使用 Python 和 scikit-learn 进行特征提取、转换和选择。

import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.model_selection import train_test_split

# 示例数据集
data = pd.DataFrame({
    'age': [25, 32, 47, 51, 62],
    'salary': [50000, 54000, 58000, 60000, 62000],
    'city': ['New York', 'San Francisco', 'San Francisco', 'New York', 'Chicago'],
    'target': [1, 0, 1, 0, 1]
})

# 特征和目标变量
X = data.drop('target', axis=1)
y = data['target']

# 处理数值特征
numeric_features = ['age', 'salary']
scaler = StandardScaler()
X[numeric_features] = scaler.fit_transform(X[numeric_features])

# 处理类别特征
categorical_features = ['city']
encoder = OneHotEncoder(drop='first')
encoded_features = encoder.fit_transform(X[categorical_features]).toarray()
# 获取编码后的特征名称
encoded_feature_names = encoder.get_feature_names_out(categorical_features)
# 删除类别型特征
X = X.drop(categorical_features, axis=1)
# 将独热编码后的特征添加到原始数据中
X[encoded_feature_names] = encoded_features
print(X)

# 特征选择
selector = SelectKBest(score_func=f_classif, k=3)
X_selected = selector.fit_transform(X, y)
selected_feature_names = X.columns[selector.get_support(indices=True)]

print("Selected features:", selected_feature_names)

# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X_selected, y, test_size=0.2, random_state=42)

# 打印结果

print("X_train:\n", X_train)
print("X_test:\n", X_test)
输出:

在这里插入图片描述

总结

特征工程是机器学习中的关键步骤,通过特征提取、特征转换和特征选择,可以显著提升模型的性能。了解不同的方法和工具,并在实际项目中应用这些技术,能够帮助你构建更强大和准确的模型。

标签:机器,features,示例,特征,feature,学习,test,sklearn
From: https://blog.csdn.net/a6181816/article/details/139297478

相关文章

  • 机器学习_决策树与随机森林
    决策树和随机森林是常用的机器学习算法,尤其在分类和回归任务中应用广泛。以下详细介绍它们的用法,并提供相应的代码实例。决策树决策树是基于树结构的模型,逐步细化决策,最终形成对目标变量的预测。用法分类:用于分类任务,目标变量是类别。回归:用于回归任务,目标变量是连续值......
  • 基于Java公考综合学习平台设计与实现论文
    摘要本文的重点是对公考综合学习平台展开了详细的描述,其中包含了其目前的发展状况和所涉及到的发展背景。接着,本文还讨论了该系统的设计目的,还讨论了系统的需求,并提出了整体的设计方案。对于该系统的设计和实现,也都进行了较为详细的讨论,并在此基础上,对公考综合学习平台展......
  • Zynq学习笔记--AXI4-Stream 图像数据从仿真输出到图像文件
    目录1.简介2.构建工程2.1Vivado工程2.2TestBench代码2.3关键代码分析3. VPG BackgroundPatternID(0x0020)Register4.总结1.简介使用SystemVerilog将AXI4-Stream图像数据从仿真输出到图像文件(PPM)。用到的函数包括$fopen、$fwrite和$fclose......
  • 自动驾驶学习3-摄像头(1)
    1、简介车载摄像头指安装在汽车上,用于监控汽车内外环境情况以辅助汽车驾驶员行驶的摄像设备。智能驾驶的眼睛。分类:车载摄像头按安装位置的不同可分为前视、后视、环视、内视车载摄像头。前视摄像头需要进行测距功能,所以一般分辨率要求较高广角镜头:......
  • 深度学习笔记_卷积神经网络CNN
    卷积层实际上是内积,就是把一个图片分成nnn个区域,分别对每个区域用fliter做内积(对应位置相乘,最后求和)池化层存在意义卷积层提取出的特征太多了,要用池化......
  • Vue学习
    指令vuecreatevuedemo1npmrunserve一、脚手架目录文件介绍&项目运行流程yarnserve----->main.js(核心代码:1.导入vue核心包,2.导入APP.vue根组件,3.实例化Vue,将APP.vue渲染到index.html容器中)//导入了VueimportVuefrom'vue'//导入app.vue根组件importAppfrom'./......
  • 基于金融知识图谱的问答机器人
    importjsonfromflaskimportFlask,requestfrompy2neoimportGraphfrompyhanlpimport*app=Flask(__name__)@app.route("/qa",methods=['POST','GET'])defkg_qa():ifrequest.method=='GET':ques......
  • 学习C#
    下面的案例和代码算不上特别基础,关于基础的C#,网上一大堆,我决定重新看一遍C#本质论,然后记录下,用来完善我的基础,朋友们可以跳着看1、开始基础a、解释下string的不可变stringresult;result="HelloWorld!";在C#中,string类型是一个引用类型,这意味着它在堆上分配内存。当你声明......
  • 联邦学习DLG攻击_NeurIPS2019_Deep Leakage from Gradients_深度梯度泄露,模型逆向攻击
    联邦学习联邦学习DLG攻击_NeurIPS2019_DeepLeakagefromGradients_深度梯度泄露发现了梯度可以倒推参数的问题文章目录要开始看些安全的内容了!一、Abstract二、Introduction2.1联邦学习的背景:2.2提出疑问:「梯度共用」计划有否保障每名参加者的训练资料集的私隐?2.......
  • m基于Qlearning强化学习工具箱的网格地图路径规划和避障matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要       Q-Learning是强化学习中的一种重要算法,它属于无模型(model-free)学习方法,能够使智能体在未知环境中学习最优策略,无需环境的具体模型。将Q-Learning应用于路线规划和避障策略中,智能体(如机......