机器学习--标准化和缺失值处理、数据降维

标准化和缺失值的处理

标准化 :

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

## 对于归一化来说:如果出现异常点,影响了大值和小值,那么结果显然会发生改变 对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从 而方差改变较小。在已有样本足够多的情况下比较稳定,适合现代嘈杂的大数据场景。 ##

标准化API :

API : sklearn.preprocessing.StandarScaler
StandardScaler()
    处理之后每列所有数据都聚集在均值为0标准差为1附近
    StandarScaler.fit_transform(x)
        x:numpy array格式的数据(n_samples,n_features)
        返回值:转换后的形状相同的array
    StandarScaler.mean_
        原始数据中每列的平均值中位数
    StandarScaler.std_
        原始主句每列特征的方差
步骤
    实例化 StandarScaler 
    通过 fit_transform 转换 

案例 :案例 :案例 :案例 :

import numpy as np
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()  # 实例化
data = np.array([[5000,2,10,40],[6000,3,15,45],[50000,5,15,40]])  # 数据
res = ss.fit_transform(data)
print(res)


缺失值的处理方法 :

  删除 : 如果每列或者行数据达到一定比例, 建议放弃整行或整列 .

  插补 : 可以通过缺失值每行或每列的平均值/中位数来填充.

缺失值处理API :

sklearn缺失值接口 : sklearn.impute.SimpleImputer
   SimpleImputer(missing_values=‘NaN‘,strategy=‘mean‘,axis=0)
       完成缺失值插补
   SimpleImputer.fit_transform(x)
        x:numpy array格式的数据
        返回值:转换后形状相同也即是的array
步骤
    初始化SimpleImputer,指定缺失值,指定填补策略,指定行或列。 注:缺失值也可以是别的指定要替换的值
    调用 ?t_transform  

案例:案例:案例:案例:

import numpy as np
from sklearn.impute import SimpleImputer
data = np.array([[1,2],[np.NaN,3],[7,6]])
si = SimpleImputer()
# si = SimpleImputer(missing_values=6,strategy=‘most_frequent‘)
# missing_values : 指定值填充,默认为NaN.
# strategy : 填充数值计算方法  [‘mean‘, ‘median‘, ‘most_frequent‘, ‘constant‘]
res = si.fit_transform(data)
print(res)

  ## ??  列avg,不包含NaN,不计算NaN行 ##



数据降维

数据降维 :这里的维度指定是特征数量,这里的降维是指减少特征的数量。

数据降维有2种,分别是特征选择 和 主成分分析.


特征选择 : 

  特征选择的原因 :

    冗余 : 部分特征的相关度搞,容易消化计算性能.

    噪声 : 部分特征对预测结果有影响.

  概念 :

    特征选择就是指 单纯的从提取到的所有特征选择部分特征作为训练集特征, 特征在选择前和选择后可以改变值,也可以不改变值.但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分.

  主要方法:

    Filter(过滤式): VarianceThreshold

    Embedded(嵌入式): 正则化 , 决策树

特征选择API (降维):

类:sklearn.feature_selection.VarianceThreshold
VarianceThreshold(threshold=0.0)
    删除所有低方差特征
Variance.?t_transform(x)
    x:numpy array格式的数据
    返回值:删除方差低于threshold的特征之后的数据集
    默认值是保留所有非零方差特征,即删除所有样本中具有相同值的特征
流程
    初始化VarianceThreshold,指定阈值方差
    调用 ?t_transform

案例:案例:案例:案例:

# 案例演示
import numpy as np
from sklearn.feature_selection import VarianceThreshold
data = np.array([[0,2,0,3],[0,1,4,3],[0,1,2,3]])
print(‘降维前:‘,data)
vt = VarianceThreshold(threshold=0.0)  #过滤方差为0 , 数据不变
res = vt.fit_transform(data)   # 少部分数据
print(‘降维后:‘,res)


主成分分析 :

  本质 : PCA是一种分析,简化数据集的技术.

  目的 : 是数据维度压缩,尽可能降低原数据的维数(复杂度),尽可能的减少损失信息

  作用 : 可以消减回归分析或者聚类分析中特征的数量

  使用场景 : 特征数量达到上百的时候,考虑数据的简化.

主成分分析API(降维) :

类 sklearn.decompositon.PCAPCA(n_componets=None) 
    将数据分解为较低维数据
    PCA.?t_transform(x)
        x:numpy array格式
        返回值:转换后降低维度的array
    n_componets参数:
        小数:表示将信息保存到原信息的百分比,例如0.95表示降维后信息量是原来的95%。一般制定到0.9-0.95
        整数:较少到的特征数量,一般不使用
    流程
        实例化 PCA 
        调用 ?t_transform

案例:案例:案例:案例:

from sklearn.decomposition import PCA
pca = PCA(n_components=0.95)
data = np.array([[2,8,4,5],[6,3,0,8],[5,4,9,1]])
print(‘主成分分析降维前:\n‘,data)
res = pca.fit_transform(data)
print(‘主成分分析降维后:\n‘,res)
# 维度下降,不损失信息



真实案例演示 :

 案例代码 :

# 代码
import pandas as pd from sklearn.decomposition import PCA
# 读取四张表的数据
prior = pd.read_csv(r‘D:\dataanalysis\Felix\week7\instacart\order_products__prior.csv‘)   # 没有数据,只有代码.....
product = pd.read_csv(r‘D:\dataanalysis\Felix\week7\instacart\products.csv‘)
orders = pd.read_csv(r‘D:\dataanalysis\Felix\week7\instacart\orders.csv‘)
aisles = pd.read_csv(r‘D:\dataanalysis\Felix\week7\instacart\aisles.csv‘)
# 合并四张表到一张表,(用户-物品类别)
data = pd.merge(prior, product, on=‘product_id‘)
data = pd.merge(data, orders, on=‘order_id‘ )
data = pd.merge(data, aisles, on=‘aisle_id‘)
# 建立一个以用户为行,产品为列的表 # 即用户和产品进行交叉
table = pd.crosstab(data[‘user_id‘], data[‘aisle‘])
# 数据结构为(206209, 134),需要做主成分分析,进行降维
pca = PCA(n_components=0.9)

res = pca.fit_transform(table)  # 最后降维成: (206209, 27)

API总结 :

  1. fit_transform() : 输入数据直接转换

  2. fit() : 输入数据,计算一些中间值,但是不能转换

  3. transform() : 进行数据转换

  4. fit_transform() = fit() + transform()

原文地址:https://www.cnblogs.com/luowei93/p/11946640.html

时间: 2024-10-03 07:00:23

机器学习--标准化和缺失值处理、数据降维的相关文章

Stanford机器学习---第十讲. 数据降维

本文原始地址见http://blog.csdn.net/abcjennifer/article/details/8002329,在此添加了一些自己的注释方便理解 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.内容大多来自

数据降维(Dimensionality reduction)

数据降维(Dimensionality reduction) 应用范围 无监督学习 图片压缩(需要的时候在还原回来) 数据压缩 数据可视化 数据压缩(Data Compression) 将高维的数据转变为低维的数据, 这样我们存储数据的矩阵的列就减少了, 那么我们需要存储的数据就减少了 数据可视化 数据可视化是非常重要的, 通过可视化数据可以发现数据的规律, 但是大多数时候我们到的数据是高维度的, 可视化很困难, 采用数据降维可以将数据降到二维进行数据可视化 加快机器学习算法的速度 维度少了程序

08-05 细分构建机器学习应用程序的流程-数据预处理

目录 细分构建机器学习应用程序的流程-数据预处理 一.1.1 缺失值处理 1.1 1.1.1 删除缺失值 1.1.1 4.6.1.2 填充缺失值 二.1.2 异常值处理 三.1.3 自定义数据类型编码 四.1.4 通过sklearn对数据类型编码 五.1.5 独热编码 5.1 1.5.1 sklearn做独热编码 5.2 1.5.2 pandas做独热编码 六.1.6 数据标准化 6.1 1.6.1 最小-最大标准化 6.2 1.6.2 Z-score标准化 七.1.7 二值化数据 八.1.8

Coursera《machine learning》--(14)数据降维

本笔记为Coursera在线课程<Machine Learning>中的数据降维章节的笔记. 十四.降维 (Dimensionality Reduction) 14.1 动机一:数据压缩 本小节主要介绍第二种无监督学习方法:dimensionality reduction,从而实现数据的压缩,这样不仅可以减少数据所占磁盘空间,还可以提高程序的运行速度.如下图所示的例子,假设有一个具有很多维特征的数据集(虽然下图只画出2个特征),可以看到x1以cm为单位,x2以inches为单位,它们都是测量长

【深度学习】数据降维方法总结

引言: 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表达形式. y是数据点映射后的低维向量表达,通常y的维度小于x的维度(当然提高维度也是可以的).f可能是显式的或隐式的.线性的或非线性的. 目前大部分降维算法处理向量表达的数据,也有一些降维算法处理高阶张量表达的数据.之所以使用降维后的数据表示是因为:①在原始的高维空间中,包含有冗余信息以及噪音信息,在实际应

高维数据降维——主成分分析

一. 高维数据降维 高维数据降维是指采取某种映射方法,降低随机变量的数量.例如将数据点从高维空间映射到低维空间中,从而实现维度减少.降维分为特征选择和特征提取两类,前者是从含有冗余信息以及噪声信息的数据中找出主要变量,后者是去掉原来数据,生成新的变量,可以寻找数据内部的本质结构特征. 简要来说,就是通过对输入的原始数据的特征学习,得到一个映射函数,实现将输入样本映射后到低维空间中,其原始数据的特征并没有明显损失.通常新空间的维度要小于原空间的维度.目前大部分降维算法是处理向量形式的数据. 二.

数据降维--低秩恢复

数据降维--低秩恢复 在实际的信号或图像采集与处理中,数据的维度越高, 给数据的采集和处理带来越大的限制.例如,在采集三维或四维(三个空间维度再加上一个频谱维度或一个时间维度) 信号时,往往比较困难.然而,随着数据维数的升高,这些高维数据之间往往存在较多的相关性和冗余度.信号的维度越高,由于数据本身信息量的增长比数据维度增长慢得多,也就使得数据变得越冗余.一个明显的例子就是,视频信号要比单幅图像的可压缩的空间大得多. 例如,对于一幅图像而言,其像素间的相关性表现在图像在某个变换域的系数是稀疏分布

数据降维技术(2)—奇异值分解(SVD)

上一篇文章讲了PCA的数据原理,明白了PCA主要的思想及使用PCA做数据降维的步骤,本文我们详细探讨下另一种数据降维技术—奇异值分解(SVD). 在介绍奇异值分解前,先谈谈这个比较奇怪的名字:奇异值分解,英文全称为Singular Value Decomposition.首先我们要明白,SVD是众多的矩阵分解技术中的一种,矩阵分解方式很多,如三角分解(LU分解.LDU分解.乔列斯基分解等).QR分解及这里所说的奇异值分解:其次,singular是奇特的.突出的.非凡的意思,从分解的过程及意义来看

数据降维方法小结

原文:http://blog.csdn.net/yujianmin1990/article/details/48223001 数据的形式是多种多样的,维度也是各不相同的,当实际问题中遇到很高的维度时,如何给他降到较低的维度上?前文提到进行属性选择,当然这是一种很好的方法,这里另外提供一种从高维特征空间向低纬特征空间映射的思路. 数据降维的目的 数据降维,直观地好处是维度降低了,便于计算和可视化,其更深层次的意义在于有效信息的提取综合及无用信息的摈弃. 数据降维的方法 主要的方法是线性映射和非线性