降维降的是什么?
减低维度
我们降低的对象是二维数组。我们减低了特征的个数,也就是列数
说的形象一点就是把三维的转换为二维的效果。
当然我们减低维数有要求,首先我们必须要求特征与特征之间不相关。
降维的两种方式
1.特征选择
主要方法
过滤式(低反差特征过滤)
如果特征方差小,就说明特征大多的样本的之比较相近(这种特征就可以去掉)
如果特征反差大,就说明某个特征很多样本的值都有差别
sklearn有专门的API接口
相关系数
计算方法:
相关系数的特点
整体代码如下
"""
过滤低方差特征
:return:
"""
# 1、获取数据,然后对数据进行处理
data = pd.read_csv("factor_returns.csv")
# 对数据进行选取,获取到主要的信息 我们需要所有的行,我们从第一列到倒数第二列
data = data.iloc[:, 1:-2]
print("data:\n", data)
# 2、实例化一个转换器类,然后指定阈值
transfer = VarianceThreshold(threshold=10)
# 3、调用fit_transform
data_new = transfer.fit_transform(data)
# 打印新的数据以及特征值
print("data_new:\n", data_new, data_new.shape)
# 计算某两个变量之间的相关系数 这个相关系数是皮尔逊相关系数
r1 = pearsonr(data["pe_ratio"], data["pb_ratio"])
print("相关系数:\n", r1)
r2 = pearsonr(data['revenue'], data['total_expense'])
print("revenue与total_expense之间的相关性:\n", r2)
return None