sklearn 数据集划分和数据预处理

一、数据集划分

机器学习一般的数据集会划分为两个部分:

  • 训练数据:用于训练,构建模型
  • 测试数据:在模型检验时使用,用于评估模型是否有效

划分比例:

  • 训练集:70% 80% 75%
  • 测试集:30% 20% 25%

数据集划分api

  • sklearn.model_selection.train_test_split(arrays, *options)
    • 参数:
      • x 数据集的特征值
      • y 数据集的标签值
      • test_size 测试集的大小,一般为float
      • random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
    • return
      • x_train, x_test, y_train, y_test
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 1、获取鸢尾花数据集
iris = load_iris()
# 对鸢尾花数据集进行分割
# 训练集的特征值x_train 测试集的特征值x_test 训练集的目标值y_train 测试集的目标值y_test
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22)

 

二、数据归一化

可以看出,鸢尾花的4个特征数据的分布不在同一个区间,这样不利于机器学习模型的训练,因此需要对特征数据进行归一化处理。

  • 为什么我们要进行归一化?

    • 特征的单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级容易影响(支配)目标结果,使得一些算法无法学习到其它的特征

定义

通过对原始数据进行变换把数据映射到(默认为[0,1])之间,

公式

API:

sklearn.preprocessing.MinMaxScaler (feature_range=(0,1) )

  • MinMaxScalar.fit_transform(X)
    • X:numpy array格式的数据[n_samples,n_features]
  • 返回值:转换后的形状相同的array
iris_data = pd.DataFrame(iris["data"], columns=['sepal length',
                                                 'sepal width',
                                                 'petal length',
                                                 'petal width'])

def min_max_demo(data):
    """
    演示数据归一化
    """
    transfer = MinMaxScaler(feature_range=(0,1))
    res_data = transfer.fit_transform(data[['sepal length',
                                            'sepal width',
                                            'petal length',
                                            'petal width']])
    print(res_data)


print(min_max_demo(iris_data))

 

三、标准化

问题:如果数据中异常点较多,会有什么影响?

注意:最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。

定义:

            通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内。

公式:

           

  • 对于归一化来说:如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变
  • 对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小。

API:

sklearn.preprocessing.StandardScaler( )

  • 处理之后每列来说所有数据都聚集在均值0附近标准差差为1
  • StandardScaler.fit_transform(X)
    • X:numpy array格式的数据[n_samples,n_features]
  • 返回值:转换后的形状相同的array
iris_data = pd.DataFrame(iris["data"], columns=['sepal length',
                                                 'sepal width',
                                                 'petal length',
                                                 'petal width'])


def stand_demo(data):
    """
    演示数据标准化
    """
    transfer = StandardScaler()
    res_data = transfer.fit_transform(data[['sepal length',
                                            'sepal width',
                                            'petal length',
                                            'petal width']])
    print(res_data)
    print('每一列的方差为:\n:', transfer.mean_)
    print('每一列的标准差为:\n:', transfer.var_)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sklearn是一个基于Python语言的第三方模块,提供了简单高效的数据挖掘和数据分析工具。它集成了一些常用的机器学习方法,使得进行机器学习任务时不需要实现算法,只需调用sklearn库中提供的模块即可完成大部分的机器学习任务。sklearn库是在Numpy、Scipy和matplotib的基础上开发而成的。 sklearn中内置了一些常用的数据集,如鸢尾花数据集(iris)、波士顿房价数据集(boston)和手写数字数据集(digits)等。这些数据集在学习和实践中被广泛使用。可以通过调用相关模块来加载和使用这些数据集。比如,可以使用sklearn.datasets模块的load_函数来加载数据集。例如,使用datasets.load_boston()可以加载波士顿房价数据集。 可以使用这些数据集来进行数据预处理和特征工程,在机器学习任务中起到了重要的作用。通过对数据集的了解和处理,可以更好地理解数据的特征和分布,从而提高模型的准确性和性能。 总结来说,sklearn提供了丰富的数据集和相关的操作方法,可以方便地进行数据分析和机器学习任务。它是一个强大的工具,可以帮助我们更好地理解和处理数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [机器学习:数据划分和介绍](https://blog.csdn.net/qq_45315982/article/details/103311165)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python-Sklearn内置数据集介绍与“三板斧”](https://blog.csdn.net/rettbbetter/article/details/128859438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值