机器学习好伙伴之scikit-learn的使用——特征提取

有些时候特征太多了,可以利用sklearn中自带的函数进行特征提取噢
在这里插入图片描述

什么是特征提取

在进行机器学习的实验里,但并不是所有的维度都是有用的,如果能将对实验结果影响较大的有用维度提取出来,去除掉无用维度,那么既可以提高预测的精度、也可以加快模型的预测时间。
PCA(主成分分析)与LDA(线性评价分析)是特征提取的两种经典算法。
本质上两个特征提取方法都是学习一个投影矩阵,从而使样本在新的坐标系上的表示具有相应的特性。

sklearn中特征提取的实现

PCA(主成分分析)

该方法通过调用如下函数实现。

import sklearn.decomposition as sk_decomposition
sk_decomposition.PCA()

其主要使用的参数为:
1、n_components:当输入大于1时,代表降维后的特征量;当输入大于0小于1时,代表主成分的方差和所占的最小阈值;’mle’代表使用MLE算法根据特征的方差分布情况去选择主成分特征进行降维。
2、whiten: 判断是否需要将降维后的数据的每个特征进行归一化,让方差都为1。
3、svd_solver:奇异值分解SVD的方法,输入为以下四个之一{‘auto’, ‘full’, ‘arpack’, ‘randomized’}。

应用方式如下:

pca = sk_decomposition.PCA(n_components=2,whiten=False,svd_solver='auto')
pca.fit(data_X)

LDA(线性评价分析)

该方法通过调用如下函数实现。

import sklearn.discriminant_analysis as sk_discriminant_analysis
sk_discriminant_analysis.LinearDiscriminantAnalysis()

其主要使用的参数为:
1、n_components:代表降维后的特征量。
2、svd_solver:奇异值分解SVD的方法,输入为以下四个之一{‘auto’, ‘full’, ‘arpack’, ‘randomized’}。

应用方式如下:

lda = sk_discriminant_analysis.LinearDiscriminantAnalysis(n_components=2)

应用示例

PCA部分

import sklearn.decomposition as sk_decomposition
from sklearn import datasets

loaded_data = datasets.load_boston()
data_X = loaded_data.data
data_Y = loaded_data.target
pca = sk_decomposition.PCA(n_components=2,whiten=False,svd_solver='auto')

pca.fit(data_X)
#PCA_X为降维后的数据
PCA_X = pca.transform(data_X) 
print ('各个主成分方差比例',pca.explained_variance_ratio_)
print ('各个主成分方差值',pca.explained_variance_)
print ('降维后的特征数量',pca.n_components_)

实验结果为:

各个主成分方差比例 [0.80582318 0.16305197]
各个主成分方差值 [30889.91126082  6250.3300614 ]
降维后的特征数量 2

LDA部分

import sklearn.discriminant_analysis as sk_discriminant_analysis
from sklearn.model_selection import train_test_split
from sklearn import datasets

loaded_data = datasets.load_iris()
data_X = loaded_data.data
data_Y = loaded_data.target
X_train, X_test, y_train, y_test = train_test_split(data_X, data_Y, test_size=0.3)

# 生成lda降维的结构
lda = sk_discriminant_analysis.LinearDiscriminantAnalysis(n_components=2)
lda.fit(data_X,data_Y)

#lda_X为降维后的数据
lda_X = lda.transform(data_X) 

#中心点
print ('LDA的中心点:',lda.means_) 
#score是指分类的正确率
print ('LDA后,预测的正确率:',lda.score(X_test, y_test)) 
#降维后特征空间的类中心
print ('LDA后,特征空间的类中心:',lda.scalings_) 

实验结果为:

LDA的中心点: [[5.006 3.428 1.462 0.246]
			  [5.936 2.77  4.26  1.326]
 			  [6.588 2.974 5.552 2.026]]
LDA后,预测的正确率: 0.9777777777777777
LDA后,特征空间的类中心: [[ 0.82937764  0.02410215]
						[ 1.53447307  2.16452123]
						[-2.20121166 -0.93192121]
						[-2.81046031  2.83918785]]
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bubbliiiing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值