机器学习05-数据准备(利用 scikit-learn基于Pima Indian数据集作数据预处理)

这篇具有很好参考价值的文章主要介绍了机器学习05-数据准备(利用 scikit-learn基于Pima Indian数据集作数据预处理)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

机器学习的数据准备是指在将数据用于机器学习算法之前,对原始数据进行预处理、清洗和转换的过程。数据准备是机器学习中非常重要的一步,它直接影响了模型的性能和预测结果的准确性

以下是机器学习数据准备的一些常见步骤:

数据收集:首先需要收集原始数据,可以是从数据库、文件、传感器等多种来源获取数据。数据的来源和质量直接影响了后续数据准备的难度和效果。

1. 数据清洗:数据清洗是指处理数据中的缺失值、异常值和重复值。缺失值是指数据中缺少某些属性值的情况,异常值是指与其他数据明显不同的值,而重复值是指数据中出现了重复的记录。清洗数据可以提高模型的鲁棒性和准确性。

2.特征选择:特征选择是从原始数据中选择最相关、最有用的特征作为模型的输入。选择合适的特征可以降低模型的复杂性,提高模型的泛化能力,并减少训练时间。

3.特征转换:特征转换是指对原始数据进行转换或缩放,以便更好地适应机器学习模型。例如,将类别型数据转换成数值型数据,对数值型数据进行标准化或归一化等操作。

4.数据划分:将数据集划分为训练集、验证集和测试集。训练集用于训练模型,验证集用于调整模型的超参数和验证模型的性能,测试集用于评估模型的泛化能力。

5.数据增强:对于数据量较少的情况,可以使用数据增强技术生成新的样本,以增加数据的多样性和数量,从而改善模型的泛化能力。

6.处理类别不平衡:在二分类或多分类问题中,数据中某些类别可能数量较少,导致类别不平衡。可以使用欠采样、过采样或集成学习等方法来处理类别不平衡问题。

7.数据编码:将类别型数据进行编码,例如使用独热编码(One-Hot Encoding)将类别转换成二进制向量。

8.数据标准化:对数值型数据进行标准化或归一化,使得不同特征具有相同的尺度,避免模型受到数据范围的影响。

以上步骤是机器学习数据准备的一部分,具体的数据准备步骤会因任务类型、数据类型和模型选择等因素而有所不同。数据准备是机器学习流程中的重要环节,它需要仔细考虑和实施,以保证数据的质量和模型的性能。

数据预处理

数据预处理需要根据数据本身的特性进行,有不同的格式和不同的要求,有缺失值的要填,有无效数据的要剔,有冗余维的要选,这些步骤都和数据本身的特性紧密相关。

数据预处理大致分为三个步骤:数据的准备、数据的转换、数据的输出。

为什么需要数据预处理?

数据处理是系统工程的基本环节,也是提高算法准确度的有效手段。
因此,为了提高算法模型的准确度,在机器学习中也要根据算法的特征和数据的特征对数据进行转换。

也就是说在开始机器学习的模型训练之前,需要对数据进行预处理,这是一个必需的过程。但是需要注意的是,不同的算法对数据有不同的假定,需要按照不同的方式转换数据。当然,如果按照算法的规则来准备数据,算法就可以产生一个准确度比较高的模型。

我们主要讲 利用scikitlearn 来转换数据,以便我们将处理后的数据应用到算法中,这样也可以提高算法模型的准确度。

什么是scikitlearn ?

scikit-learn(简称为sklearn)是一个流行的用于机器学习和数据挖掘的Python库。它提供了丰富的工具,用于构建和应用各种机器学习算法,并支持数据预处理、特征工程、模型评估等功能。scikit-learn
是开源的,易于使用,广泛应用于数据科学和机器学习领域。

scikit-learn 的主要特点包括:

简单易用:scikit-learn 提供了一致且易于使用的API,使得构建和应用机器学习模型变得非常简单。

大量算法:scikit-learn 支持众多的经典和先进的机器学习算法,包括回归、分类、聚类、降维等。它还提供了许多特征选择和特征转换的工具。

数据预处理:scikit-learn 提供了丰富的数据预处理功能,包括缺失值处理、数据标准化、数据归一化、数据编码等。

模型评估:scikit-learn 提供了评估机器学习模型性能的工具,包括交叉验证、网格搜索、学习曲线等。

整合性:scikit-learn 可以与其他Python库(如NumPy、Pandas)无缝整合,方便数据处理和模型应用。

文档齐全:scikit-learn 的官方文档非常详细,提供了丰富的示例和用法说明。

使用 scikit-learn 进行机器学习的一般流程包括数据准备、模型选择、模型训练、模型评估和预测。

接下来将介绍以下几种数据转换方法:
· 调整数据尺度(Rescale Data)。
· 正态化数据(Standardize Data)。
· 标准化数据(Normalize Data)。
· 二值数据(Binarize Data)。

四种不同的方法来格式化数据依然使用Pima Indian的数据
集作为例子。这四种方法都会按照统一的流程来处理数据:
· 导入数据。
· 按照算法的输入和输出整理数据。
· 格式化输入数据。
· 总结显示数据的变化。

scikit-learn 提供了两种标准的格式化数据的方法,每一种方法都有适
用的算法。利用这两种方法整理的数据,可以直接用来训练算法模型。在
scikit-learn 的说明文档中,也有对这两种方法的详细说明:

· 适合和多重变换(Fit and Multiple Transform)。
· 适合和变换组合(Combined Fit-and-Transform)。

推荐优先选择适合和多重变换(Fit and Multiple Transform)方法。

首先调用fit()函数来准备数据转换的参数,然后调用 transform()函数来做数据的预处理。适合和变换组合(Combined Fit-and-Transform)对绘图或汇总处理具有非常好的效果。
详细的数据预处理方法可以参考scikit-learn的API文档。

调整数据尺度

如果数据的各个属性按照不同的方式度量数据,那么通过调整数据的尺度让所有的属性按照相同的尺度来度量数据,就会给机器学习的算法模型训练带来极大的方便。

这个方法通常会将数据的所有属性标准化,并将数据转换成0和1之间的值,这对于梯度下降等算法是非常有用的,对于回归算法、神经网络算法和K近邻算法的准确度提高也起到很重要的作用。

在 scikit-learn 中,调整数据的尺度是数据预处理的重要步骤之一,它可以确保不同特征具有相同的尺度,避免模型受到数据范围的影响。通常有两种常见的尺度调整方法:

标准化(Standardization)和归一化(Normalization)

标准化(Standardization):

标准化是一种将特征数据转换为均值为0,标准差为1的过程。标准化后的数据符合标准正态分布,这对于一些模型(如线性回归、逻辑回归、支持向量机等)的训练过程有着较好的效果。在
scikit-learn 中,你可以使用 StandardScaler 来进行标准化。

示例:

import numpy as np
from sklearn.preprocessing import StandardScaler

# 创建一个特征矩阵
X = np.array([[1, 2], [3, 4], [5, 6]])

# 创建 StandardScaler 对象
scaler = StandardScaler()

# 调整数据尺度(标准化)
X_scaled = scaler.fit_transform(X)
# 显示特征矩阵
print("X_scaled=\n", X_scaled)

运行结果:

X_scaled=
 [[-1.22474487 -1.22474487]
 [ 0.          0.        ]
 [ 1.22474487  1.22474487]]

归一化(Normalization):

归一化是一种将特征数据缩放到一个指定的范围(通常是[0,
1])的过程。归一化后的数据在原始数据的分布上保持了相对的比例关系,适用于需要将特征放在同一量纲的算法(如KNN、神经网络等)。在
scikit-learn 中,你可以使用 MinMaxScaler 来进行归一化。

示例:

import numpy as np
from sklearn.preprocessing import MinMaxScaler

# 创建一个特征矩阵
X = np.array([[1, 2], [3, 4], [5, 6]])

# 创建 MinMaxScaler 对象
scaler = MinMaxScaler()

# 调整数据尺度(归一化)
X_scaled = scaler.fit_transform(X)

print(X_scaled)

运行结果:

[[0.  0. ]
 [0.5 0.5]
 [1.  1. ]]

这里的 fit_transform() 方法将用于对特征矩阵 X 进行尺度调整。首先,fit() 方法会计算每个特征的均值和标准差(对于标准化)或最大值和最小值(对于归一化)。然后,transform() 方法会根据计算得到的参数对特征矩阵 X 进行尺度调整。如果有测试集需要调整尺度,应该使用 fit() 方法计算训练集的参数,然后使用 transform() 方法分别对训练集和测试集进行尺度调整,确保使用相同的参数进行尺度调整,以避免信息泄漏。

实验:下面用Pima Indian 数据集将不同计量单位的数据统一成相同的尺度。

代码如下:

import pandas as pd
from matplotlib import pyplot as plt
from numpy import set_printoptions
from sklearn.preprocessing import MinMaxScaler

#数据预处理
path = 'D:\down\\archive\\diabetes.csv'
data = pd.read_csv(path)
#将数据转成数组
array = data.values
#分割数据
X = array[:, 0:8]

#创建MinMaxScaler对象
trans = MinMaxScaler(feature_range=(0, 1))
#数据归一化
newX = trans.fit_transform(X)
#设置数据打印格式
set_printoptions(precision=3)

print(newX)


运行结果:

[[0.353 0.744 0.59  ... 0.501 0.234 0.483]
 [0.059 0.427 0.541 ... 0.396 0.117 0.167]
 [0.471 0.92  0.525 ... 0.347 0.254 0.183]
 ...
 [0.294 0.608 0.59  ... 0.39  0.071 0.15 ]
 [0.059 0.633 0.492 ... 0.449 0.116 0.433]
 [0.059 0.467 0.574 ... 0.453 0.101 0.033]]

正态化数据 -StandardScaler()

在机器学习中,将数据正态化是指将数据转换成符合正态分布(或高斯分布)的过程。正态化数据是一种常见的数据预处理步骤,它可以使得数据具有零均值和单位方差,有助于提高一些模型的性能,特别是需要数据满足正态分布假设的模型。

在 scikit-learn 中,你可以使用 StandardScaler来对数据进行正态化,这会将数据转换成均值为0,标准差为1的正态分布。

import pandas as pd
from numpy import set_printoptions
from sklearn.preprocessing import StandardScaler

#数据预处理
path = 'D:\down\\archive\\diabetes.csv'
data = pd.read_csv(path)
#将数据转成数组
array = data.values
#分割数据
X = array[:, 0:8]

#创建StandardScaler对象
trans = StandardScaler().fit(X)
#数据归一化
newX = trans.transform(X)
#设置数据打印格式
set_printoptions(precision=3)

print(newX)




运行结果:

[[ 0.64   0.848  0.15  ...  0.204  0.468  1.426]
 [-0.845 -1.123 -0.161 ... -0.684 -0.365 -0.191]
 [ 1.234  1.944 -0.264 ... -1.103  0.604 -0.106]
 ...
 [ 0.343  0.003  0.15  ... -0.735 -0.685 -0.276]
 [-0.845  0.16  -0.471 ... -0.24  -0.371  1.171]
 [-0.845 -0.873  0.046 ... -0.202 -0.474 -0.871]]

标准化数据

标准化数据(Normalize Data)处理是将每一行的数据的距离处理成1(在线性代数中矢量距离为
1)的数据又叫作“归一元”处理,适合处理稀疏数据(具有很多为 0 的数据),归一元处理的数据对使用权重输入的神经网络和使用距离的 K近邻算法的准确度的提升有显著作用。

使用scikitlearn 中的 Normalizer 类实现。代码如下:

import pandas as pd
from numpy import set_printoptions
from sklearn.preprocessing import  Normalizer

#数据预处理
path = 'D:\down\\archive\\diabetes.csv'
data = pd.read_csv(path)
#将数据转成数组
array = data.values
#分割数据
X = array[:, 0:8]

#创建StandardScaler对象
trans = Normalizer().fit(X)
#数据归一化
newX = trans.transform(X)
#设置数据打印格式
set_printoptions(precision=3)

print(newX)


运行结果:

[[0.034 0.828 0.403 ... 0.188 0.004 0.28 ]
 [0.008 0.716 0.556 ... 0.224 0.003 0.261]
 [0.04  0.924 0.323 ... 0.118 0.003 0.162]
 ...
 [0.027 0.651 0.388 ... 0.141 0.001 0.161]
 [0.007 0.838 0.399 ... 0.2   0.002 0.313]
 [0.008 0.736 0.554 ... 0.241 0.002 0.182]]

二值数据

二值数据(Binarize Data)是使用值将数据转化为二值,大于阈值设置为1,小于阈值设置为0。这个过程被叫作二分数据或阈值转换。在生成明确值或特征工程增加属性的时候使用,使用scikit-learn中的Binarizer类实现。

代码如下:

import pandas as pd
from numpy import set_printoptions
from sklearn.preprocessing import Binarizer

#数据预处理
path = 'D:\down\\archive\\diabetes.csv'
data = pd.read_csv(path)
#将数据转成数组
array = data.values
#分割数据
X = array[:, 0:8]

#创建StandardScaler对象
trans = Binarizer(threshold=0.0).fit(X)
#数据归一化
newX = trans.transform(X)
#设置数据打印格式
set_printoptions(precision=3)

print(newX)




运行结果:

[[1. 1. 1. ... 1. 1. 1.]
 [1. 1. 1. ... 1. 1. 1.]
 [1. 1. 1. ... 1. 1. 1.]
 ...
 [1. 1. 1. ... 1. 1. 1.]
 [1. 1. 1. ... 1. 1. 1.]
 [1. 1. 1. ... 1. 1. 1.]]

scikit-learn中对数据进行预处理的四种方法。这四种方法适用于不同的场景,可以在实践中根据不同的算法模型来选择不同的数据预处理方法.先看个大概,后续再度这些格式化数据做更深入的理解说明文章来源地址https://www.toymoban.com/news/detail-623968.html

到了这里,关于机器学习05-数据准备(利用 scikit-learn基于Pima Indian数据集作数据预处理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习库Scikit-learn

    本文目录 3.1 背景知识 3.2 Scikit-learn概述 3.3 Scikit-learn主要用法 3.3.1 基本建模流程 3.3.2 数据预处理 3.3.3 监督学习算法 3.3.4 无监督学习算法 3.3.5 评价指标 3.3.6 交叉验证及超参数调优 3.4 Scikit-learn总结 参考文献 Scikit-learn是基于NumPy、SciPy和Matplotlib的开源Python机器学习包,它封装

    2024年02月04日
    浏览(42)
  • 机器学习-决策树-分类-汽车数据集-fetch_openml python scikit-learn

    在这个使用决策树的分类任务中,将使用OpenML提供的汽车数据集来预测给定汽车信息的汽车可接受性。将使用Sklearn ’ fetch_openml \\\'函数加载它。 此次获取的数据的版本是2。在数据集的版本1中,目标类有4个类(unacc, acc, good, vgood),但在第二个版本中,大多数类是Positive§,而其

    2024年02月22日
    浏览(48)
  • 【机器学习笔记】 6 机器学习库Scikit-learn

    Scikit-learn是基于NumPy、 SciPy和 Matplotlib的开源Python机器学习包,它封装了一系列数据预处理、机器学习算法、模型选择等工具,是数据分析师首选的机器学习工具包。 自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了,scikit-learn简称sklearn,支持包括 分类,回归,降维

    2024年02月20日
    浏览(42)
  • 【python】scikit-learn包:机器学习

    只支持python语言 Win+R ,输入指令: pip install -U scikit-learn 借助pandas和numpy 进行数据导入与处理 机器学习的函数大部分只能对数字信息进行处理,无法对string类数据进行分析,因此需要将string类信息进行编码数字化 参考blog链接,可进行补码 给定数据集 [x1,x2,x3,…,y],拟合y与各

    2024年02月01日
    浏览(40)
  • Python机器学习:Scikit-learn库与应用

    当涉及到Python机器学习时,Scikit-learn是一个非常流行且功能强大的库。它提供了广泛的算法和工具,使得机器学习变得简单而高效。下面是一个简单的Scikit-learn库与应用示例,其中包括代码。 首先,确保你已经安装了Scikit-learn库。你可以使用pip命令来安装它: bash复制代码

    2024年02月19日
    浏览(49)
  • 探索 Scikit-learn:Python 机器学习初级篇

    Scikit-learn 是 Python 中最著名的机器学习库之一,它提供了大量实用的机器学习算法以及相关的工具,可以方便我们进行数据挖掘和数据分析。在这篇文章中,我们将介绍 Scikit-learn 的基本使用,包括如何导入数据、预处理数据、选择和训练模型,以及评估模型的性能。 在使用

    2024年02月17日
    浏览(41)
  • 机器学习算法实战(scikit-learn版本)---线性回归

    目录 文章目标: 1,导入库  2,导入数据集 3,缩放/归一化训练数据 4,创建并拟合回归模型 5,查看参数 6,预测 7,可视化  有一个开源的、商业上可用的机器学习工具包,叫做[scikit-learn](https://scikit-learn.org/stable/index.html)。这个工具包包含了你在本课程中要使用的许多算法的实

    2024年02月05日
    浏览(39)
  • 使用Scikit-Learn实现多标签分类,助力机器学习

    大家好,在机器学习任务中,分类是一种监督学习方法,用于根据输入数据预测标签。例如,我们想要根据历史特征预测某人是否对销售优惠感兴趣,通过使用可用的训练数据训练机器学习模型,可以对输入数据执行分类任务。 平常会遇到一些经典分类任务,例如二元分类(

    2024年02月11日
    浏览(37)
  • 【机器学习】scikit-learn机器学习中随机数种子的应用与重现

    随机数种子是为了能重现某一次实验生成的随机数而设立的,相同的随机数种子下,生成的随机数序列一样 一、随机数种子基础应用 在python中简单运用随机数种子 结果如下 可以看到out[6]之前加载了随机数种子1之后可以重现第一次随机数的生成结果 二、随机数种子在scikit

    2024年02月01日
    浏览(47)
  • 掌握 Scikit-Learn: Python 中的机器学习库入门

    机器学习 (Machine Learning) 是一个近年来频繁出现在科技新闻, 研究报告, 行业分析和实际应用中的热门领域. 机器学习 (Machine Learning) 正以前所未有的速度影响着我们的生活. 从智能音响的语音识别, 手机摄像头的人脸解锁, 到金融领域的评估, 医疗健康的预测分析. 机器学习的应

    2024年02月07日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包