一个网站有多大,学生模拟网站开发,南京制作网站优化,惠州网站建设哪家强目录
特征降维概念
低方差过滤法
PCA主成分分析
相关系数法
小结 特征降维概念
特征对训练模型时非常重要的#xff1b;用于训练的数据集包含一些不重要的特征#xff0c;可能导致模型性能不好、泛化性能不佳#xff1b;例如#xff1a;
某些特征的取值较为接近用于训练的数据集包含一些不重要的特征可能导致模型性能不好、泛化性能不佳例如
某些特征的取值较为接近其包含的信息较少希望特征独立存在对预测产生影响两个特征同增同减非常相关也会干扰模型的学习
特征降维是指在某些限定条件下降低特征个数常用的方法 低方差过滤法、PCA主成分分析降维法、相关系数皮尔逊相关系数、斯皮尔曼相关系数 低方差过滤法
低方差过滤法指的是删除方差低于某些阈值的一些特征
特征方差小特征值的波动范围小包含的信息少模型很难学习到数据的规律特征方差大特征值的波动范围大包含的信息相对丰富便于模型学习事物规律异常值除外
机器学习低方差过滤API
sklearn.feature_selection.VarianceThreshold(threshold 0.0) 实例化对象用于删除所有低方差特征variance_obj.fit_transform(X) X:numpy array格式的数据[n_samples,n_features]
import numpy as np
import pandas as pd
from sklearn.feature_selection import VarianceThreshold
np.set_printoptions(suppressTrue)
pd.set_option(display.float_format, lambda x: %.4f % x)
def dm01_VarianceThreshold():mydata pd.read_csv(./data/factor_returns.csv)print(mydata--\n, mydata.columns)print(mydata--\n, mydata.shape)transfer VarianceThreshold(threshold0.2)mydata transfer.fit_transform(mydata.iloc[:, 1:10]) # /0123456print(mydata.shape)print(mydata) 效果(20011) 降到了(2008)
PCA主成分分析
主成分分析Principal Component AnalysisPCA
PCA 通过对数据维数进行压缩尽可能降低原数据的维数(复杂度)损失少量信息在此过程中可能会舍弃原有数据、创造新的变量。 通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量转换后的这组变 量叫主成分。 sklearn.decomposition.PCA(n_componentsNone) 将数据分解为较低维数空间n_components: 小数表示保留百分之多少的信息整数表示减少到多少特征 例如由20个特征减少到10个 返回值转换后指定维度的array 非主要成分的数据不是被删除而是被压缩在空间几何中被称为投影 from sklearn.decomposition import PCA
def dm02_PCA():data [[2, 8, 4, 5],[6, 3, 0, 8],[5, 4, 9, 1]]transfer PCA(n_components0.9)data1 transfer.fit_transform(data)print(data1, data1.shape)transfer2 PCA(n_components3)data2 transfer2.fit_transform(data)print(data2, data2.shape) 主成分分析变换后数据会发生变化
相关系数法
相关系数反映特征列之间变量之间密切相关程度的统计指标。 特征x和目标值y的密切程度是否同增同减特征x和特征x之间是否同增同减 可以把密切相关的2个列删除掉1列达到特征降维的效果 常见2个相关系数皮尔逊相关系数、斯皮尔曼相关系数
皮尔逊相关系数
反映变量之间相关关系密切程度的统计指标
相关系数的值介于–1与1之间当 r0 时表示两变量正相关r0 时两变量为负相关当 |r|1 时表示两变量为完全相关当r0时表示两变量间无相关关系。 |r|0.4为低度相关0.4≤|r|0.7为显著性相关0.7≤|r|1为高度线性相关 from scipy.stats import pearsonr
from scipy.stats import pearsonr
def dm03_pearsonr():x1 [12.5, 15.3, 23.2, 26.4, 33.5, 34.4, 39.4, 45.2, 55.4, 60.9]x2 [21.2, 23.9, 32.9, 34.1, 42.5, 43.2, 49.0, 52.8, 59.4, 63.5]print(pearsonr(x1, x2)--, pearsonr(x1, x2))
相关系数斯皮尔曼
from scipy.stats import spearmanr
def dm04_spearmanr():x1 [12.5, 15.3, 23.2, 26.4, 33.5, 34.4, 39.4, 45.2, 55.4, 60.9]x2 [21.2, 23.9, 32.9, 34.1, 42.5, 43.2, 49.0, 52.8, 59.4, 63.5]print(spearmanr(x1, x2)--, spearmanr(x1, x2))
斯皮尔曼相关系数与之前的皮尔逊相关系数大小性质一样取值 [-1, 1]之间斯皮尔曼相关系数比皮尔逊相关系数应用更加广泛。 小结
低方差过滤法按照阈值把方差比较小的某一列进行剔除sklearn.feature_selection.VarianceThreshold PCA主成分分析数据压缩高维数据转换为低维数据然后产生了新的变量sklearn.decomposition.PCA皮尔逊相关系数|r|0.4为低度相关0.4≤|r|0.7为显著性相关0.7≤|r|1为高度线性相关,from scipy.stats import pearsonr斯皮尔曼相关系数:通过等级差进行计算计算相对简单使用更广from scipy.stats import spearmanr