一、数据集
二、特征抽取
三、特征预处理
- API:sklearn.processing
3 无量纲化
- 归一化
- 标准化
- 为什么要进行归一化/标准化?
特征的单位或者大小相差比较大,或者某特征的方差相比其他的特征要大出几个数量级,容易影响目标结果,使得一些算法无法学习到其他的特征
3.1归一化
3.1.1 定义
通过原始数据进行变换把数据映射到(默认为[0,1])区间
3.1.2 公式
作用于每一列,max为一列的最大值,min为一列的最小值,那么X''为最终结果,mx,mi分别为指定区间值默认mx为1,mi为0.
3.1.3 API
- sklearn.processing. MinMaxScaler(feature_range=(0,1)...)
- MinMaxScaler fit_transform(X)
X: numpy array 格式的数据[n_samples,n_features]
2.返回值:转换后的形状相同的array
3.1.4 数据计算
- 分析
- 实例化MinMaxScaler
- 通过fit_transform转换
import numpy as np
from sklearn.processing import MinMaxScaler
"""
归一化
:return:
"""
#1.获取数据集
def minmax_demo()
data = np.read_csv("dataing.txt")
data = data.iloc[:, :3]
print("data:/n".data)
#2.实例化一个容器
transfer = MinMaxScaler(feature=[0,1])
#3.调用fit_transform
data_new = transfer.fit_transform(data)
print("data_new:/n",data_new)
return None
3.1.5 归一化总结
最大值、最小值是变化的,另外,最大值与最小值容易受异常点影响。所以这种方法鲁棒性比较差,只适合传统精度比较小的数据场景。
怎么办?见标准化。
3.2 标准化
3.2.1 定义
通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内
3.2.2 公式
- 对于归一化来说:如果出现了异常点,影响了最大、最小值,结果显然会发生改变。
- 对于标准化来说:如果出现了异常点,由于具有一定的数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小。
3.2.3 API
- sklearn.processing StandScaler()
- 处理之后,对没列来说,所有数据都聚集在均值为0附近,标准差为1
- StandScaler.fit_transform(X)
X: numpy array 格式的数据[n_samples,n_features]
3. 返回值:转换后的形状相同的array
3.2.4 数据计算
- 分析
- 实例化StandScaler
- 通过fit_transform转换
import pandans as pd
fron sklearn.processing import StandScaler
def stand_demo():
"""
标准化
:return:
"""
#1、获取数据
data = pd.read_csv("dating.txt")
data = data.iloc[:, :3]
print("data:\n",data)
#实例化一个转换器类
transfer = StanderScaler()
#3、调用fit_transform
data_new = transfer.fit_transfer(data)
print("data_new:\n",data_new)
return None
3.2.5 标准化总结
在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景
四、特征降维
学习目标
- 目标
- 应用VarianceThreshold实现删除低方差特征
- 了解相关系数的特点和计算
- 应用相关系数实现特征选择
降维的两种方式
- 特征选择
- 主成分分析(可以理解一种特征提取的方式)
降维的含义:
降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程
4.1 特征选择
4.1.1 定义
数据中包含冗余或相关变量 (或称特征、属性、指标等) ,旨在从原有特征中找出主要特征。
4.1.2 方法
- Filter(过滤式):主要探究特征本身特点、特征与特征和目标值之间关联
- 方差选择法:低方差特征过滤
- 相关系数
- Embedded(嵌入式):算法自动选择特征(特征与目标值之间的关联)
- 决策树:信息熵、信息增益
- 正则化: L1、L2
- 深度学习:卷积等
4.1.3 模块
sklearn.feature_selection
4.1.4 过滤式
低方差特征过滤:
- 特征方差小:某个特征大多样本的值比较相近.
- 特征方差大:某个特征很多样本的值都有差别
API
- sklearn.feature_selection VarianceThreshold(shreshold = 0.0)
1.删除所有低方差特征
2.Variance.fit transform(X)
X:numpy array格式的数据[n_samples,n_features]
返回值:训练集差异低于threshold的特征将被删除。默认值是保留所有非零方差特征,即删除所有样本中具有相同值的特征。
数据计算
- 分析
- 初始化VarianceThreshold,指定阀值方差
- 调用fit_transform
import pandas as pd
from sklearn.feature_selection import VarianceThreshold
def variance_demo():
'''
过滤低方差特征
return:
'''
#1、获取数据
data = pd.read_csv()
data =data.iloc[: ,: ]
print("data:/n", data)
#2、实例化一个转换器类
transfer = VarianceThreshold()
#3、调用 fit_transform
data_new = transfer.fit_transform(data)
print("data_new:/n",data_new, data_new.shape)
return None
相关系数
- 皮尔逊相关系数(Pearson Correlation Coefficient):反映变量之间相关关系密切程度的统计指标
公式计算