机器学习2(降维)

降维: 减少特征,称之为降维(这里的维不再是 数组里面的维度了)
若现在有100个特征,减少一个 也可以称之为降维

1. 特征选择
原因:
1.冗余:部分特征相关度高,容易消耗计算性能
2.噪音: 部分特征对预测结果有影响
三大武器:
1. filter(过滤式): variance threshold (从方差的角度去过滤)
API:
sklearn.feature_selection.VarianceThreshold
variance = VarianceThreshold(threshold=0) ---- 删除所有低方差特性
variance.fit_transform(X)
X: numpy array数据格式
返回值:训练集低于threshold的特征被删除。默认值是保留非0方差特征,即删除样本中具有相同值特征
eg:
 1 def Var():  # 方差过滤式
 2 
 3     '''
 4     过滤式
 5     :return:None
 6     '''
 7 
 8     var = VarianceThreshold(threshold=0)
 9     x = var.fit_transform([[1, 2, 3, 6],
10                             [1, 6, 6, 8],
11                             [1, 21, 6, 7]])
12     print(x)
过滤式

      2. embedded(嵌入式): 正则化,决策树
3. wrapper(包裹式)

2.主成分分析(数据也会改变,特征数量也会减少 eg:两个特征差不多,就合并两个特征)
API: sklearn.decomposition
本质:PCA是一种分析,简化数据集的技术
目的:是数据维数压缩,尽可能降低原数据维数(复杂度),损失少量信息
作用:可以削减回归分析或者聚类分析中特征的数量
前提:特征数量达到上百, 考虑数据的简化

PCA(n_components=None) n_components=0.9 (n_components为保留多少的特征,一般在0.9-0.95)
将数据分解为低维数空间
PCA.fit_transform(X)
X: numpy array格式的数据[n_samples, n_features]
返回值: 转换后指定维度的array
def Pca():
    pca = PCA(n_components=0.92)
    x = pca.fit_transform([[1, 2, 3, 6],
                            [1, 6, 6, 8],
                            [1, 21, 6, 7]])
    print(x)

补充:


'''
在我们实践中我们需要下载数据然后
pd.read_csv('path')
假如需要分析的数据在不同的表格里面我们可以(找两个表相同的columns)把多个表合并成一个表 pd.merge(lift, right, on=[''])
在把特征放在列 可以使用交叉表(特殊的分组表)pd.crosstab(row, column)

'''

猜你喜欢

转载自www.cnblogs.com/BookMiki/p/10500796.html
今日推荐