Sklearn学习笔记(1)——数据预处理

写在开始:Sklearn 预处理

Preprocessing
Sklearn 中【数据预处理】

  • 工具包:sklearn.preprocessing
  • 两大块:特征提取和标准化
  • 过程:特征向量 → 特征表达(符合评估器 API的形式)
    ( raw feature vectors → representation that is more suitable for the downstream estimators)

在一般情况下,学习算法受益于数据集的标准化(standardization)。如果数据集集存在某些异常值,那么稳定的放缩( scalers )和转化(transformers )是比较合适的。有需要,可以在Compare the effect of different scalers on data with outliers 进一步关注不同的放缩器、转化器和正规化器(normalizers)的效果差异。

1. 标准化/去均值和方差缩放:均值为0,方差为1

数据集的标准化 对scikit-learn中实现的大多数机器学习算法来说是常见的要求 。如果个别特征或多或少看起来不是很像标准正态分布(具有零均值和单位方差),那么它们的表现力可能会较差。

在实际情况中,我们经常忽略特征的分布形状,直接经过去均值来对某个特征进行中心化,再通过除以非常量特征(non-constant features)的标准差进行缩放。

  • 目的
    将数据进行缩放,使其具有零均值标准方差

  • 原因:

许多学习算法中目标函数的基础都是假设所有的特征都是零均值并且具有同一阶数上的方差。
如果某个特征的方差比其他特征大几个数量级,那么它就会在学习算法中占据主导位置,导致学习器并不能像我们说期望的那样,从其他特征中学习。

StandardScaler()

  • scale():针对简单数组
>>> from sklearn import preprocessing
>>> import numpy as np
>>> X_train = np.array([[ 1., -1.,  2.],
...                     [ 2.,  0.,  0.],
...                     [ 0.,  1., -1.]])
>>> X_scaled = preprocessing.scale(X_train)

>>> X_scaled
array([[ 0.  ..., -1.22...,  1.33...],
       [ 1.22...,  0.  ..., -0.26...],
       [-1.22...,  1.22..., -1.06...]])
  • Transformer()

Transformer()是 位于preprocessing 模块——StandardScaler() 类下面 API,它实现了转化器的API来计算训练集上的平均值和标准偏差,以便以后能够在测试集上重新应用相同的变换。

有需要也可以通过在构造函数 StandardScaler 中传入参数 with_mean=False 或者with_std=False 来取消中心化或缩放操作。

>>> scaler = preprocessing.StandardScaler().fit(X_train)
>>> scaler
StandardScaler()

>>> scaler.mean_
array([1. ..., 0. ..., 0.33...])

>>&g
Python数据分析入门时,数据预处理是一个重要步骤,特别是当你处理网络爬虫获取的数据时。下面是一个简单的案例,说明如何对数据进行预处理: 首先,你需要使用pandas库,它是Python进行数据分析的主要工具。如果你还没有安装,可以使用pip install pandas来安装。 1. **导入数据**: 如果数据存储在CSV文件,可以这样加载: ```python import pandas as pd data = pd.read_csv('your_data_file.csv') ``` 如果是网页数据,可能需要先通过requests和BeautifulSoup等库抓取,再转换成pandas DataFrame。 2. **检查和清理数据**: 确认数据是否已加载,然后检查数据是否有缺失值或不需要的列: ```python print(data.head()) # 查看前几行数据 columns_to_keep = ['影片文名', '影片外国名', '评分', '评价数', '概况'] original_columns = data.columns.tolist() irrelevant_columns = [col for col in original_columns if col not in columns_to_keep] ``` 3. **删除无关列**: 使用`drop`函数移除不需要的列: ```python data = data.drop(irrelevant_columns, axis=1) ``` 4. **数据清洗**: 对于"评分"和"评价数"这类数值型数据,确认它们的数据类型正确。如果有异常值(如非数字),可能需要进一步处理。 5. **查看处理后的数据**: ```python cleaned_data = data[columns_to_keep] print(cleaned_data.head()) ``` 在这个例子,我们仅保留了指定的五列,并删除了其他列。最后一步是保存预处理后的数据,以便后续分析: ```python cleaned_data.to_csv('processed_data.csv', index=False) # 将数据保存为csv ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值