0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器学习算法学习之特征工程2

jf_78858299 来源:人工智能大讲堂 2023-04-19 11:38 次阅读

缩放和归一化

缩放和归一化是特征工程中的重要步骤,以确保特征具有类似的比例和范围。这可以帮助改善一些机器学习算法的性能,并使优化过程更快。以下是用于缩放和归一化的一些常见技术:

1.标准化:标准化将特征缩放,使其具有零均值和单位方差。这通过从每个值中减去均值,然后将其除以标准差来完成。结果值将具有零均值和单位方差。

以下是使用 scikit-learn 的标准化示例:

from sklearn.preprocessing import StandardScaler


# Create a StandardScaler object
scaler = StandardScaler()


# Fit and transform the data
X_scaled = scaler.fit_transform(X)

2.最小-最大缩放:最小-最大缩放将特征缩放到一个固定的范围,通常在0和1之间。这通过从每个值中减去最小值,然后除以范围来完成。

以下是使用 scikit-learn 的最小-最大缩放示例:

from sklearn.preprocessing import MinMaxScaler


# Create a MinMaxScaler object
scaler = MinMaxScaler()


# Fit and transform the data
X_scaled = scaler.fit_transform(X)

图片

Fig.4 — Standardization and Normalization

3.鲁棒缩放:鲁棒缩放与标准化类似,但它使用中位数和四分位距代替均值和标准差。这使得它对数据中的异常值更加鲁棒。

以下是使用 scikit-learn 的鲁棒缩放示例:

from sklearn.preprocessing import RobustScaler


# Create a RobustScaler object
scaler = RobustScaler()


# Fit and transform the data
X_scaled = scaler.fit_transform(X)

4.归一化:归一化将每个观测值缩放为单位范数,这意味着每个特征值的平方和为1。这对于某些需要所有样本具有类似比例的算法非常有用。

以下是使用 scikit-learn 进行归一化的示例:

from sklearn.preprocessing import Normalizer


# Create a Normalizer object
scaler = Normalizer()


# Fit and transform the data
X_scaled = scaler.fit_transform(X)

创建新特征

创建新特征是特征工程中的一个重要步骤,它涉及从现有数据中创建新的变量或列。这可以帮助捕捉特征之间的复杂关系并提高模型的准确性。

以下是创建新特征的一些技术:

1.交互特征:交互特征是通过将两个或多个现有特征相乘来创建的。这可以帮助捕捉特征的联合效应并揭示数据中的新模式。例如,如果我们有两个特征,“年龄”和“收入”,我们可以通过将这两个特征相乘来创建一个名为“age_income”的新交互特征。

以下是使用 Python 中的 Pandas 创建交互特征的示例:

import pandas as pd


# create a sample data frame
data = pd.DataFrame({'age': [25, 30, 35],
                     'income': [50000, 60000, 70000]})


# create a new interaction feature
data['age_income'] = data['age'] * data['income']


# display the updated data frame
print(data)

2.多项式特征:多项式特征是通过将现有特征提高到更高的幂来创建的。这可以帮助捕捉特征之间的非线性关系并提高模型的准确性。例如,如果我们有一个特征“年龄”,我们可以通过将这个特征平方来创建一个新的多项式特征称为“age_squared”。

以下是使用 Python 中的 Scikit-learn 创建多项式特征的示例:

from sklearn.preprocessing import PolynomialFeatures
import numpy as np


# create a sample data set
X = np.array([[1, 2],
              [3, 4]])


# create polynomial features up to degree 2
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X)


# display the updated feature matrix
print(X_poly)

3.分箱:分箱将连续值分组为离散类别。这可以帮助捕捉非线性关系并减少数据中异常值的影响。例如,如果我们有一个特征“年龄”,我们可以通过将年龄分组为不同的类别,例如“0-18”、“18-25”、“25-35”、“35-50”和“50+”,来创建一个名为“age_group”的新分箱特征。

以下是使用 Python 中的 Pandas 创建分箱特征的示例:

import pandas as pd


# create a sample data frame
data = pd.DataFrame({'age': [20, 25, 30, 35, 40, 45, 50, 55]})


# create bins for different age groups
bins = [0, 18, 25, 35, 50, float('inf')]
labels = ['0-18', '18-25', '25-35', '35-50', '50+']
data['age_group'] = pd.cut(data['age'], bins=bins, labels=labels)


# display the updated data frame
print(data)

处理不平衡数据

处理不平衡数据是机器学习中的一个重要方面。不平衡数据是指目标变量的分布不均匀,其中一个类别相对于另一个类别的样本数量较少。这可能会导致模型对多数类别产生偏差,并且模型可能在少数类别上表现不佳。一些处理不平衡数据的技术包括:

1.过采样(Upsampling):过采样通过对现有样本进行替换性重采样来为少数类别创建更多的样本。可以使用 sklearn.utils 模块中的 resample 函数来实现。

from sklearn.utils import resample


# Upsample minority class
X_upsampled, y_upsampled = resample(X_minority, y_minority, replace=True, n_samples=len(X_majority), random_state=42)

2.降采样(Downsampling):降采样通过从多数类别中删除一些样本来平衡分布。可以使用 sklearn.utils 模块中的 resample 函数来实现。

from sklearn.utils import resample


# Downsample majority class
X_downsampled, y_downsampled = resample(X_majority, y_majority, replace=False, n_samples=len(X_minority), random_state=42)

Fig.4 — UnderSampling and OverSampling

3.合成少数类过采样技术(SMOTE):SMOTE 涉及基于现有样本为少数类创建合成样本。这可以使用 imblearn.over_sampling 模块中的 SMOTE 函数来完成。

from imblearn.over_sampling import SMOTE


# Use SMOTE to upsample minority class
sm = SMOTE(random_state=42)
X_resampled, y_resampled = sm.fit_resample(X, y)

4.类别权重(Class Weighting):类别权重将权重分配给模型中的每个类别,以考虑不平衡性。可以使用模型中的 class_weight 参数来实现。

from sklearn.linear_model import LogisticRegression


# Use class weighting to handle imbalance
clf = LogisticRegression(class_weight='balanced', random_state=42)
clf.fit(X_train, y_train)

5.异常检测(Anomaly Detection):异常检测涉及识别数据中的异常值并将其删除。可以使用 sklearn.ensemble 模块中的 IsolationForest 函数来实现。异常检测是在数据集中识别与预期或正常行为显著偏离的罕见事件或观测值。在不平衡数据的情况下,其中一个类别的观测值数量远低于另一个类别,可以使用异常检测来识别和标记少数类别中的罕见观测值为异常值。这可以帮助平衡数据集并提高机器学习模型的性能。

在不平衡数据中进行异常检测的一种常见方法是使用聚类等无监督学习技术,将少数类别的观测值基于其相似性聚类成不同的组。不属于这些聚类之一的少数类别观测值可以被标记为异常值。

另一种方法是使用单类别分类等监督学习技术,其中使用多数类别数据训练模型来学习数据的正常行为。然后将与学习到的正常行为显著偏离的少数类别观测值标记为异常值。

from sklearn.ensemble import IsolationForest


# Use anomaly detection to handle imbalance
clf = IsolationForest(random_state=42)
clf.fit(X_train)
X_train = X_train[clf.predict(X_train) == 1]
y_train = y_train[clf.predict(X_train) == 1]

6.成本敏感学习(Cost-Sensitive Learning):成本敏感学习将不同类型的错误分配不同的成本以考虑不平衡性。可以使用模型中的 sample_weight 参数来实现。

在成本敏感学习中,模型会为每个类别分配一个成本权重。这些成本权重反映了在模型中犯错的代价。通常,少数类别的成本权重比多数类别的成本权重高,以强制模型更加关注少数类别。这可以通过调整 sample_weight 参数来实现。

from sklearn.tree import DecisionTreeClassifier


# Use cost-sensitive learning to handle imbalance
clf = DecisionTreeClassifier(random_state=42)
clf.fit(X_train, y_train, sample_weight=class_weights)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码
    +关注

    关注

    6

    文章

    835

    浏览量

    54457
  • 机器学习
    +关注

    关注

    66

    文章

    8123

    浏览量

    130567
  • 预处理
    +关注

    关注

    0

    文章

    32

    浏览量

    10411
收藏 人收藏

    评论

    相关推荐

    机器学习算法特征工程与意义详解

    1、特征工程与意义 特征就是从数据中抽取出来的对结果预测有用的信息。 特征工程是使用专业知识背景知识和技巧处理数据,是得
    发表于 10-08 15:24 2663次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b><b class='flag-5'>算法</b>的<b class='flag-5'>特征</b><b class='flag-5'>工程</b>与意义详解

    机器算法学习比较

    转本文主要回顾下几个常用算法的适应场景及其优缺点!机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容
    发表于 09-27 10:48

    【下载】《机器学习》+《机器学习实战》

    ]目录:第一部分 分类第1章 机器学习基础  22章 k-近邻算法   15第3章 决策树   32第4章 基于概率论的分类方法:朴素贝叶
    发表于 06-01 15:49

    贪心算法学习

    算法学习之路——贪心
    发表于 09-04 07:17

    模拟退火的算法学习

    模拟退火算法学习
    发表于 06-16 11:02

    有感FOC算法学习与实现总结

    原文:https://blog.csdn.net/u010632165/article/details/103656254文章目录基于STM32的有感FOC算法学习与实现总结1 前言2 FOC算法
    发表于 07-05 06:45

    机器学习简介与经典机器学习算法人才培养

    上课时间安排:2022年05月27日 — 2022年05月30日No.1 第一天一、机器学习简介与经典机器学习算法介绍什么是
    发表于 04-28 18:56

    机器学习特征工程的五个方面优点

    特征工程是用数学转换的方法将原始输入数据转换为用于机器学习模型的新特征特征
    的头像 发表于 03-15 16:57 3638次阅读

    SVPWM的原理与算法学习课件免费下载

    本文档的主要内容详细介绍的是SVPWM的原理与算法学习课件免费下载包括了:SVPWM原理,SVPWM算法,SVPWM的Matlab仿真,SVPWM的DSP实现。
    发表于 03-08 08:00 21次下载
    SVPWM的原理与<b class='flag-5'>算法学习</b>课件免费下载

    机器学习算法学习特征工程1

    特征工程机器学习过程中的关键步骤,涉及将原始数据转换为机器学习
    的头像 发表于 04-19 11:38 553次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b><b class='flag-5'>算法学习</b>之<b class='flag-5'>特征</b><b class='flag-5'>工程</b>1

    机器学习算法学习特征工程3

    特征工程机器学习过程中的关键步骤,涉及将原始数据转换为机器学习
    的头像 发表于 04-19 11:38 740次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b><b class='flag-5'>算法学习</b>之<b class='flag-5'>特征</b><b class='flag-5'>工程</b>3

    机器学习算法汇总 机器学习算法分类 机器学习算法模型

    机器学习算法汇总 机器学习算法分类 机器
    的头像 发表于 08-17 16:11 727次阅读

    机器学习算法总结 机器学习算法是什么 机器学习算法优缺点

    机器学习算法总结 机器学习算法是什么?机器
    的头像 发表于 08-17 16:11 1084次阅读

    机器学习算法入门 机器学习算法介绍 机器学习算法对比

    机器学习算法入门 机器学习算法介绍 机器
    的头像 发表于 08-17 16:27 630次阅读

    机器学习有哪些算法机器学习分类算法有哪些?机器学习预判有哪些算法

    机器学习有哪些算法机器学习分类算法有哪些?机器
    的头像 发表于 08-17 16:30 1399次阅读