【Sklearn驯化-数据处理】一文搞懂sklearn中数据处理方法StandardScaler、OneHotEncoder、pca

【Sklearn驯化-数据处理】一文搞懂sklearn中数据处理方法StandardScaler、OneHotEncoder、pca
 
本次修炼方法请往下查看
在这里插入图片描述

🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 相关内容文档获取 微信公众号
🎇 相关内容视频讲解 B站

🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验

🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


下滑查看解决方法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  

🎯 1、sklearn自带数据

  scikit-learn(简称sklearn)是Python中一个广泛使用的机器学习库,它不仅提供了众多的机器学习算法实现,还包含了若干内置数据集,这些数据集被广泛用于学习、测试和演示机器学习算法。这些数据集包括鸢尾花(Iris)、葡萄酒(Wine)、波士顿房价(Boston)等经典数据集。
  但是波士顿房价数据在sklearn大于1.2版本之后不再进行更新迭代了,后续如果使用将通过下面的方法进行:
在这里插入图片描述

1.1 鸢尾花(Iris)数据

  在scikit-learn(sklearn)库中,鸢尾花(Iris)数据集被称为"load_iris"数据集。该数据集是一个监督型数据集,可以根据该数据集作为后续监督学习算法的实践学习,具体关于该数据集的一些介绍如下所示:

  • 该数据集在sklearn库中是一个字典对象,包含以下几个属性:

  • data: 一个包含鸢尾花样本特征的二维数组,每一行代表一个样本,每一列代表一个特征(萼片长度、萼片宽度、花瓣长度和花瓣宽度)。

  • target: 一个包含鸢尾花样本标签的一维数组,每个元素代表对应样本的品种(0:Setosa,1:Versicolor,2:Virginica)。

  • target_names: 一个包含鸢尾花品种名称的一维数组,与目标数组中的标签相对应。

  • feature_names: 一个包含鸢尾花特征名称的一维数组,与特征数组中的列相对应。

  • DESCR: 一个包含数据集描述的字符串。
      具体的数据使用方法如下所示:

from sklearn.datasets import load_iris

iris = load_iris()

X = iris.data  # 特征数组
y = iris.target  # 目标数组
target_names = iris.target_names  # 目标类别名称
feature_names = iris.feature_names  # 特征名称
print(feature_name)
feature_names
['sepal length (cm)',
 'sepal width (cm)',
 'petal length (cm)',
 'petal width (cm)']
description = iris.DESCR  # 数据集描述

  

1.2 葡萄酒(Wine)数据集

   葡萄酒数据集(Wine Dataset)是sklearn中常用的一个数据集,它包含了来自于不同产地的三种不同品种的葡萄酒的化学分析结果。该数据集共有178个样本,每个样本有13个特征,分别是:

    1. Alcohol(酒精含量)
    1. Malic acid(苹果酸含量)
    1. Ash(灰分含量)
    1. Alcalinity of ash(灰分的碱度)
    1. Magnesium(镁含量)
    1. Total phenols(总酚含量)
    1. Flavanoids(类黄酮含量)
    1. Nonflavanoid phenols(非类黄酮酚含量)
    1. Proanthocyanins(原花青素含量)
    1. Color intensity(颜色强度)
    1. Hue(色相)
    1. OD280/OD315 of diluted wines(稀释酒样的吸光度之比)
    1. Proline(脯氨酸含量)

  这个数据集可以用于分类任务,其中的样本被分为三个类别,分别表示三个不同的葡萄酒品种。葡萄酒数据集可以被用来训练和评估机器学习模型,例如分类算法、聚类算法等。具体的用法如下所示:

from sklearn.datasets import load_wine

# 加载葡萄酒数据集
data = load_wine()

# 打印数据集的描述信息
print("数据集描述:\n", data.DESCR)
数据集描述:
 .. _wine_dataset:

Wine recognition dataset
------------------------

**Data Set Characteristics:**

:Number of Instances: 178
:Number of Attributes: 13 numeric, predictive attributes and the class
:Attribute Information:
    - Alcohol
    - Malic acid
    - Ash
    - Alcalinity of ash
    - Magnesium
    - Total phenols
    - Flavanoids
    - Nonflavanoid phenols
    - Proanthocyanins
    - Color intensity
    - Hue
    - OD280/OD315 of diluted wines
    - Proline
    - class:
        - class_0
        - class_1
        - class_2

:Summary Statistics:

============================= ==== ===== ======= =====
                                Min   Max   Mean     SD
============================= ==== ===== ======= =====
Alcohol:                      11.0  14.8    13.0   0.8
Malic Acid:                   0.74  5.80    2.34  1.12
Ash:                          1.36  3.23    2.36  0.27
Alcalinity of Ash:            10.6  30.0    19.5   3.3
Magnesium:                    70.0 162.0    99.7  14.3
Total Phenols:                0.98  3.88    2.29  0.63
Flavanoids:                   0.34  5.08    2.03  1.00
Nonflavanoid Phenols:         0.13  0.66    0.36  0.12
Proanthocyanins:              0.41  3.58    1.59  0.57
Colour Intensity:              1.3  13.0     5.1   2.3
Hue:                          0.48  1.71    0.96  0.23
OD280/OD315 of diluted wines: 1.27  4.00    2.61  0.71
Proline:                       278  1680     746   315
============================= ==== ===== ======= =====

1.3 波士顿房价(Boston)

  波士顿房价数据集(Boston Housing Dataset)是机器学习中常用的一个数据集,用于预测波士顿地区房屋的中位数价格。该数据集共有506个样本,每个样本有13个特征,分别是:

    1. CRIM:城镇人均犯罪率。
    1. ZN:住宅用地超过 25000 平方英尺的比例。
    1. INDUS:城镇中非零售商业用地的比例。
    1. CHAS:查尔斯河的虚拟变量(如果一个样本在河边,则取值为1,否则取值为0)。
    1. NOX:一氧化氮浓度。
    1. RM:平均每个住宅的房间数。
    1. AGE:1940 年之前建成的自住单位的比例。
    1. DIS:到波士顿五个中心区域的加权距离。
    1. RAD:离住宅最近的公路入口的可达性指数。
    1. TAX:每 10000 美元的全值财产税率。
    1. PTRATIO:城镇中教师与学生的比例。
    1. B:1000(Bk - 0.63)^2,其中Bk是城镇黑人的比例。
    1. LSTAT:人口中地位低下者的比例。这个数据集中的目标变量是房价的中位数(MEDV)。

  波士顿房价数据集可以用于回归任务,例如预测房价。在scikit-learn(sklearn)库中,数据集的使用如下所示:


import pandas as pd
import numpy as np

data_url = "http://lib.stat.cmu.edu/datasets/boston"
raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
target = raw_df.values[1::2, 2]

print(data)
array([[6.3200e-03, 1.8000e+01, 2.3100e+00, ..., 1.5300e+01, 3.9690e+02,
        4.9800e+00],
       [2.7310e-02, 0.0000e+00, 7.0700e+00, ..., 1.7800e+01, 3.9690e+02,
        9.1400e+00],
       [2.7290e-02, 0.0000e+00, 7.0700e+00, ..., 1.7800e+01, 3.9283e+02,
        4.0300e+00],
       ...,
       [6.0760e-02, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9690e+02,
        5.6400e+00],
       [1.0959e-01, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9345e+02,
        6.4800e+00],
       [4.7410e-02, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9690e+02,
        7.8800e+00]])

💡 2 Sklearn中的数据处理

  在机器学习中,数据处理是至关重要的一步。scikit-learn(简称sklearn)提供了一系列的数据处理函数,这些函数可以帮助我们进行数据清洗、特征选择、特征缩放等操作,从而提高模型的性能。具体的一些方法如下所示:

2.1 缺失值处理

  真实数据中,缺失值有较大的比例都是存在的,在sklearn中处理相关的缺失值的代码如下所示:

from sklearn.impute import SimpleImputer

# 假设有以下含缺失值的数据
data = [[np.nan, 2], [6, np.nan], [7, 6]]

# 创建填充对象并拟合数据
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
data_imputed = imputer.fit_transform(data)

print(data_imputed)

[[4.5 2. ]
 [ 6.   4.5]
 [ 7.   6. ]]

2.2 特征缩放

   特征缩放用于将数据标准化,以消除不同量纲的影响。

from sklearn.preprocessing import StandardScaler

# 使用标准缩放器
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data_imputed)

print(scaled_data)
[[-1.224744871 1.224744871]
 [ 1.224744871 -1.224744871]
 [ 0.        0.        ]]

2.3 特征编码

   特征编码是将类别型特征转换为模型可以处理的数值型特征。

from sklearn.preprocessing import OneHotEncoder

# 假设有以下类别型数据
data_categorical = [['male', 'young'], ['female', 'old'], ['female', 'young']]

# 创建编码器并拟合数据
encoder = OneHotEncoder(sparse=False)
data_encoded = encoder.fit_transform(data_categorical)

print(data_encoded)

[[1.0 0.0 1.0 0.0]
 [0.0 1.0 0.0 1.0]
 [0.0 1.0 1.0 0.0]]

2.4 主成分分析(PCA)

   PCA是一种降维技术,用于在保留数据集中大部分变异性的同时减少特征数量。

from sklearn.decomposition import PCA

# 使用PCA降维
pca = PCA(n_components=1)
data_pca = pca.fit_transform(scaled_data)

print(data_pca)

[[-1.33630621]
 [ 1.23675577]
 [ 0.99954949]]

🔍 3. 注意事项

  对上述的各个函数在使用的过程中需要注意的一些事项,不然可能会出现error,具体主要为:

  • 在进行特征缩放或编码之前,确保已经处理了所有缺失值。
  • 特征编码和PCA等方法可能会影响模型的性能,需要根据具体情况选择合适的参数。
  • 一些数据处理方法,如PCA,对数据的尺度敏感,可能需要先进行标准化。

🔧 4. 总结

  scikit-learn提供了强大的数据处理函数,这些函数涵盖了从数据清洗到特征工程的各个环节。通过本博客的代码示例,我们学习了如何使用sklearn进行数据清洗、特征缩放、特征编码和降维。正确的数据处理方法可以显著提高模型的准确性和效率。希望这篇博客能够帮助你更好地理解sklearn中的数据处理函数,并将其应用于实际的机器学习项目中。

  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只红花猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值