其他分享
首页 > 其他分享> > 机器学习(5)降维(特征选择与主成分分析)

机器学习(5)降维(特征选择与主成分分析)

作者:互联网

目录

一、基础理论

1、降维定义

2、降维对象及目标

二、低方差过滤

1、基础理论 

2、API

过程:

1、读取待处理数据集

2、创建低方差过滤转换器(设置过滤阈值)

3、低方差过滤处理

代码

三、相关系数

1、基础理论

2、API

计算相关系数

总代码


一、基础理论

1、降维定义

降维是指在特定条件下,降低随机变量(特征)个数,得到一组“不相关”变量的过程。(不仅仅是降低纬度

零维:标量

一维:向量

二维:矩阵

三维:多个二维数组嵌套

......

 相关特征:例如相对湿度与降水量。

2、降维对象及目标

降维对象:二维数组。

降维目标:得到不相关特征变量。(太多相关特征会造成特征冗余(即特征过多))

二、低方差过滤

1、基础理论 

低方差过滤,过滤掉不太重要的特征

特征方差小:大多数样品该特征差距不大。

特征方差大:很多样品该特征差距较大。(区分度高)

 

2、API

sklearn.feature_selection.VarianceThreshold

 

过程:

1、读取待处理数据集

这里如果直接读取数据集会遇到“玄学”错误。

# 1、读取数据集
    data = pd.read_csv("factor_returns.csv")

 

 显而易见,上面的数据是存在字符串的。

但是这里方差过滤特征值是基于数据进行过滤。数据处理自然没办法处理字符串。

所以我们重新读取数据:

# 1、读取数据集
    data = pd.read_csv("factor_returns.csv")
    data = data.iloc[:, 1:-2]           #从第2列到倒数第3列
    print(data)

 成功过滤掉无法进行数据处理的字符串。

2、创建低方差过滤转换器(设置过滤阈值)

# 2、创建低方差过滤转换器(设置过滤阈值)
    transfer = VarianceThreshold(threshold=500)      #设置过滤阈值

3、低方差过滤处理

# 3、低方差过滤处理
    new_data = transfer.fit_transform(data)
    print(new_data)

 可以对比结果,成功过滤掉很多的冗余特征。

代码

# 低方差过滤
def Variance_Filter():
    # 1、读取数据集
    data = pd.read_csv("factor_returns.csv")
    data = data.iloc[:, 1:-2]           #从第2列到倒数第3列
    print(data)

    # 2、创建低方差过滤转换器(设置过滤阈值)
    transfer = VarianceThreshold(threshold=500)      #设置过滤阈值

    # 3、低方差过滤处理
    new_data = transfer.fit_transform(data)

    print(new_data)

三、相关系数

1、基础理论

皮尔逊相关系数:反映变量之间相关关系密切程度的统计指标。

相关系数性质: 

 

 (正相关:一个变量增长,另一个变量随之增长)

2、API

scipy.stats.pearsonr

 

计算相关系数

# 计算相关系数
    r = pearsonr(data['pe_ratio'], data['pb_ratio'])
    print('相关系数\n', r)

 

总代码

# 降维(低方差过滤和相关系数)
from sklearn.feature_selection import VarianceThreshold
import pandas as pd
from scipy.stats import pearsonr

# 低方差过滤
def Variance_Filter():
    # 1、读取数据集
    data = pd.read_csv("factor_returns.csv")
    data = data.iloc[:, 1:-2]           #从第2列到倒数第3列
    print(data)

    # 2、创建低方差过滤转换器(设置过滤阈值)
    transfer = VarianceThreshold(threshold=500)      #设置过滤阈值

    # 3、低方差过滤处理
    new_data = transfer.fit_transform(data)
    print('低方差过滤处理\n', new_data)

    # 计算相关系数
    r = pearsonr(data['pe_ratio'], data['pb_ratio'])
    print('相关系数\n', r)


if __name__ == '__main__':
    # 低方差过滤
    Variance_Filter()

标签:机器,方差,特征选择,相关系数,降维,过滤,print,data
来源: https://blog.csdn.net/great_yzl/article/details/120182181