机器学习(5)降维(特征选择与主成分分析)
作者:互联网
目录
一、基础理论
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