机器学习-Python实践Day4(特征工程--数据特征选定)

1、特征选择

特征工程:
特征工程包含了数据预处理、特征选择、数据降维。前面介绍了数据预处理,这次我们着手对数据进行特征选择,在原始数据中提取最合适的特征用于算法和模型。
特征工程的作用:在此套用书上的话,“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限”,因此对数据做好特征工程显得尤为必要。

1.1、单变量特征选定

特征选定:如果数据中包含无关的特征属性,会降低算法的准确度,对预测结果造成干扰,尤其是线性相关算法(如线性回归算法和逻辑回归算法),因此我们筛选出有助于提高预测结果准确度的特征数据,剔除掉无关的特征数据。

①导入数据

import pandas as pd

names=['preg','plas','pres','skin','test','mass','pedi','age','class']
df=pd.read_csv('pima_data.csv',names=names)
X=df.iloc[:,0:8].values
Y=df.iloc[:,8].values
# 输出前5行
df.head()

在这里插入图片描述
②通过卡方检验选定数据特征

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
import numpy as np
# 通过卡方检验(chi-squared)的方式来选择四个结果影响最大的数据特征
skb=SelectKBest(score_func=chi2,k=4)
fit=skb.fit(X,Y)
features=fit.transform(X)
np.set_printoptions(precision=3)
# 输出卡方检验对每个数据特征的评分
print("数据特征评分:\n",fit.scores_)
# 无排序输出得分最高的四个数据特征
print("评分最高的前4个数据特征:\n",features)

在这里插入图片描述

1.2、递归特征消除(RFE)

递归特征消除(RFE)使用一个基模型来进行多轮训练,每轮训练后消除若干权值系数的特征,在基于新的特征集进行下一轮训练。通过每一次基模型的精度,找到对最终预测结果影响最大的数据特征。
①导入数据

import pandas as pd

names=['preg','plas','pres','skin','test','mass','pedi','age','class']
df=pd.read_csv('pima_data.csv',names=names)
X=df.iloc[:,0:8].values
Y=df.iloc[:,8].values
# 输出前5行
df.head()

在这里插入图片描述
②通过递归消除来选定特征

from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
lr=LogisticRegression()
rfe=RFE(lr,4)
fit=rfe.fit(X,Y)
print('特征个数:')
print(fit.n_features_)
print('被选定的特征:')
print(fit.support_)
print('特征排名:')
print(fit.ranking_)

在这里插入图片描述

1.3、主要成分分析(PCA)

主要成分分析(PCA)是使用线性代数来转换压缩数据,通常被称为数据降维。
常见的降维方法除了主要成分分析(PCA),还有线性判别分析(LDA),它本身也是一个分类模型。
PCA和LDA本质都是将原始样本映射到低纬度的样本空间。但两者的映射目标不一样:
PCA是为了让映射后的样本具有最大发散性;而LDA是为了让映射后的样本有最好 的分类性能。
PCA是一种无监督的降维方法,在聚类算法中,通常会利用PCA对数据进行降维处理,以便数据的分析和可视化。
LDA是一种有监督的降维方法。
①导入数据

import pandas as pd

names=['preg','plas','pres','skin','test','mass','pedi','age','class']
df=pd.read_csv('pima_data.csv',names=names)
X=df.iloc[:,0:8].values
Y=df.iloc[:,8].values
# 输出前5行
df.head()

在这里插入图片描述

②通过主要成分分析选定数据特征

from sklearn.decomposition import PCA
pca=PCA(n_components=3)
fit=pca.fit(X)
print('解释方差:%s' % fit.explained_variance_ratio_)
print(fit.components_)

在这里插入图片描述

1.4、特征的重要性

袋装决策树算法(Bagged Decision Trees)、随机森林算法和极端随机数算法都可以用来计算数据特征的重要性。这三种算法都是集成算法中的袋装算法。
①导入数据

import pandas as pd

names=['preg','plas','pres','skin','test','mass','pedi','age','class']
df=pd.read_csv('pima_data.csv',names=names)
X=df.iloc[:,0:8].values
Y=df.iloc[:,8].values
# 输出前5行
df.head()

在这里插入图片描述
②通过决策树计算特征的重要性

from sklearn.ensemble import ExtraTreesClassifier
etc=ExtraTreesClassifier()
fit=etc.fit(X,Y)
print('输出不同特征数据的得分:')
print(fit.feature_importances_)

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值