栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

机器学习中数据集的加载和预处理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

机器学习中数据集的加载和预处理

机器学习使用样本数据集训练模型:

  • 如果数据集出现问题,那么训练结果也会出现问题(garbage in, garbage out.);
  • 通常需要对数据集进行检查,对有问题的数据集进行预处理;
加载并浏览数据集

举例:
```
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

house = pd.read_csv('data\boston.csv')
print(house.shape)
```
对数据的预处理
  • 预期结果:
    • 无缺失值、重复值;、
    • 所包含的特征项都是经过相关性分析筛选出来的,此外还有预测目标;
    • 非数值型特征使用独热编码;
    • 数值型特征经过标准化处理;
缺失值(NaN)
  • drop:参考pandas部分笔记
  • fill:参考pandas部分笔记
    • df.fillna(method=“ffill”) 填充相邻的数据;
  • interpolate;插入值
    • 举例
      df = df.interpolate(method='linear')
      
      根据前后数据,线性填充缺失数据;
重复值(duplicate)

重复的样本数据,没有处理意义;

df.drop_duplicates()
特征选择
  • 原则:
    • 特征应尽量选择与目标线性相关,否则属于无用特征;
    • 各特征项之间应当尽量不相关,否则属于冗余特征;
  • 使用皮尔逊相关系数作为统计指标:
    • 系数:
      • 如果系数大于零:两个随机变量正相关(同增同减);
      • 如果系数小于零,表示负相关;
      • 系数等于零表示系数不相关;
      • 相关系数绝对值越大则相关程度越大;
    • 计算公式

      ρ = Cov(X,Y)/σ_x * σ_y
      • Cov(X,Y)为X与Y的协方差,分母为X、Y的标准差;
      • pandas中使用
      df.corr(method='pearson')
      
      可计算各个特征项之间的相关系数;
  • 筛选后得到的特征项重新构成新数据集;
非数值型特征的编码
  • 布尔型特征:
    • 对于二元性特征(是否、有无、男女)可转换为0-1编码;
    • pandas中的series类的map()方法可以将二元特征映射为布尔型;
  • 离散型类别特征:
    • 比如:籍贯(北京、上海、山东……)、颜色(红、绿、蓝……)
    • 当按顺序使用整数进行编码时会将本来无序的序列变成有序序列,可能会对后续机器学习造成干扰;
    • 将其分解成n个0-1形式的数据;
      • 独热编码(one-hot):是否北京、是否上海、是否山东……
数值型特征的标准化

尽量消除量纲、同一不同特征项的取值范围,这就是数据标准化(缩放);

  • 取值范围不同的原因:
    • 数据集不同特征项之间的取值范围可能存在较大差异;
    • 不同量纲也会到取值范围;
  • 取值范围不同造成的影响:
    • 取值范围的差异会造成特征项之间的不平等;
  • 常用方法:调用sklearn.preprocessing模块
    • Min-Max标准化

      min = min_x_i , max = max_x_i

      m_i = (x_i - min)/(max - min)

      此时m_i∈[0, 1]
      • sklearn库中的preprocessing.MinMaxScaler模块;
        mmScaler = MinMaxScaler()
        m = mmScaler.transform(df)["X", "Y"]
        new_df = pd.dataframe(m, columns=["X", "Y"])
        
    • Z-score标准化:

      将数据转化为Z分数;

      对原始数据实施了去中心化(使均值为0)和归一化(使方差为1)
      • 首先计算样本点的均值μ_x和方差σ_x;
      • 使用公式:z_i = (x_i - μ_x)/σ_x
      • sklearn库中的preprocessing.StandardScaler模块:
        zScaler = StandardScaler()
        z = mmScaler.transform(df)["X", "Y"]
        new_df = pd.dataframe(m, columns=["X", "Y"])
        
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/857463.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号