scikit-learn数据预处理,对特征进行归一化和标准化

一、为什么需要进行特征缩放?


因为对于大多数的机器学习算法和优化算法来说,将特征值缩放到相同区间可以使得获取性能更好的模型。就梯度下降算法而言,例如有两个不同的特征,第一个特征的取值范围为1~10,第二个特征的取值范围为1~10000。在梯度下降算法中,代价函数为最小平方误差函数,所以在使用梯度下降算法的时候,算法会明显的偏向于第二个特征,因为它的取值范围更大。在比如,k近邻算法,它使用的是欧式距离,也会导致其偏向于第二个特征。对于决策树和随机森林以及XGboost算法而言,特征缩放对于它们没有什么影响。

二、常用的特征算法缩放有哪些?


常用的特征缩放算法有两种,归一化(normalization)和标准化(standardization)。归一化算法是通过特征的最大最小值将特征缩放到[0,1]区间范围内,而多于许多机器学习算法,标准化也许会更好,标准化是通过特征的平均值和标准差将特征缩放成一个标准的正态分布,均值为0,方差为1。接下来我们就通过scikit-learn提供的方法对于葡萄酒的数据集进行标准化处理。

三、归一化(normalization)


归一化是利用特征的最大最小值,将特征的值缩放到[0,1]区间,对于每一列的特征使用min-max函数进行缩放,计算公式如下

 

利用UCI提供的葡萄酒数据集,一个有178条数据,每一条数据有13个样本

数据下载地址:https://download.csdn.net/download/sinat_29957455/10274582

import pandas as pd
from sklearn.preprocessing import MinMaxScaler
 
if __name__ == "__main__":
    #读取葡萄酒数据集
    data = pd.read_csv("G:/dataset/wine.csv")
    #获取第二列Alcohol
    x =data["Alcohol"]
    #获取数据的基本情况
    print(x.describe())
    minMax = MinMaxScaler()
    #将数据进行归一化
    x_std = minMax.fit_transform(x)
    print(x_std)

四、标准化(standardization)

标准化比归一化要更加实用,因为像逻辑斯蒂回归和支持向量机算法,刚开始训练的时候会将参数初始化为0或趋于0的随机极小值,如果是标准化的数据(均值为0,方差为1)对于它们而言,这更加容易利于权重的更新。将特征列标准化的计算公式如下

import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import StandardScaler
 
if __name__ == "__main__":
    # 读取葡萄酒数据集
    data = pd.read_csv("G:/dataset/wine.csv")
    # 获取第二列Alcohol
    x = data["Alcohol"]
    std = StandardScaler()
    #将x进行标准化
    x_std = std.fit_transform(x)
    print(x_std)

开始使用scikit-learn进行数据预处理,可以从以下几个步骤入手: 1. **安装**:确保你已经安装了Python和必要的库,括`numpy`, `pandas`, 和 `scikit-learn`。如果还没有,可以分别通过pip进行安装: ```bash pip install numpy pandas scikit-learn ``` 2. **基础理解**:熟悉Pandas,它是数据操作的核心库。学会读取CSV、Excel等常见文件格式,以及数据清洗(处理缺失值、异常值)、基本统计描述等操作。 3. **数据探索**:使用Pandas的`head()`, `describe()`, 或者可视化工具(如matplotlib或seaborn)查看数据的基本情况,了解特征分布。 4. **编码**:对于非数值型变量(如分类变量),可能需要进行独热编码(One-Hot Encoding)或标签编码(Label Encoder)。scikit-learn库提供了一些工具,如`LabelEncoder`和`OneHotEncoder`。 5. **标准化归一化**:如果是连续数值,需要对其进行缩放以保证所有特征在同一尺度上,scikit-learn有`StandardScaler`和`MinMaxScaler`等。 6. **特征选择**:如果你的数据含冗余或者无关紧要的特征,可以选择保留重要特征或降维。常用方法有单变量分析、递归特征消除(RFE)等。 7. **拆分数据**:将数据划分为训练集、验证集和测试集,通常使用`train_test_split`函数。 8. **实践项目**:尝试用一些经典的sklearn示例数据集(如波士顿房价、鸢尾花等)做实战练习,一步步应用以上步骤。 学习过程,记得查阅官方文档https://scikit-learn.org/stable/tutorial/index.html,以及在线课程、博客文章和书籍(如《利用scikit-learnPython进行机器学习》)会有很大帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值