个人学习笔记,课程为Python数学建模与分析:基础入门、数据处理、算法编程、高级绘图、建模实战!
目录
4.1统计分析可以用来分析选择对结果最大的数据特征,Skikit-learn提供了SelectKBest类。可以使用一系列统计方法进行选定数据特征。
4.2经典的卡方检验是检验定性自变量对定性自变量的相关性的方法。
5.1递归特征消除(RE)使用一个基模型来进行多轮训练,每轮模型训练后消除若干权值系数的特征,基于新的特征集进行下一轮训练。通过每一个基模型的精度,找到最终的预测结果影响最大的数据特征
5.1主成分分析(PCA)是使用线性代数来转换压缩数据,通常被称作数据降维,常见的数据降维方法除了PCA,还有LDA(线性判别分析),它本身也是一个分类型。
5.2PCA本质是将原始样本映射到维度更低的样本空间中,PCA为了样本映射后更有发散性;而LDA为了样本有最好的分类性能。
6.1袋装决策树算法(Bagging Decision Tree)、随机森林算法、极端随机算法都可以计算数据特征的重要性。
文中引入的csv文件:
链接:https://pan.baidu.com/s/1NWLzgAir70LQKUxv74lfIg?pwd=d2n5
提取码:d2n5
1.为什么需要处理数据特征
在做数据挖掘和数据分析时数据是所有问题的基础,并且会影响整个项目的进程。相较于使用一些复杂的算法,灵活地处理数据经常会有意想不到的效果。而处理数据不可避免地使用到特征工程。那么特征工程是什么?
数据和特征决定机器学习的而模型和算法知识逼近这个上限而已。
因此,特征工程目的是最大限度从原始数据中提取合适的特征,以供算法和模型使用Skikit-learn提供了较为完整地特征处理方法,包括数据预处理、特征选择、降维等。
2.数据特征选择的方法
(1)单变量特征选定
(2)递归特征消除
(3)主成分分析
(4)特征的重要性
3.什么是特征选定
特征选定是一个流程,能够选择有助于提高预测结果准确度的特征数据,或者有助于我们感兴趣的输出结果的特征数据。
如果数据中包含无关的特征属性,会降低算法的准确度,对预测新数据造成干扰,尤其是线性相关算法,因此执行特征选定有助于:
(1)降低数据的拟合度
(2)提高算法的精度
(3)减少训练时间
4.单变量特征选定
4.1统计分析可以用来分析选择对结果最大的数据特征,Skikit-learn提供了SelectKBest类。可以使用一系列统计方法进行选定数据特征。
4.2经典的卡方检验是检验定性自变量对定性自变量的相关性的方法。
4.3例
from pandas import read_csv
from numpy import set_printoptions
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
filename = 'pima.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names)
#数据分类
array = data.values
X = array[:, 0:8]
Y = array[:, 8]
#特征选择
test = SelectKBest(score_func=chi2,k=4)
fit = test.fit(X,Y)
#精度调整
set_printoptions(precision=3)
print(fit.scores_)
features = fit.transform(X)
print(features)
5.递归特征消除
5.1递归特征消除(RE)使用一个基模型来进行多轮训练,每轮模型训练后消除若干权值系数的特征,基于新的特征集进行下一轮训练。通过每一个基模型的精度,找到最终的预测结果影响最大的数据特征
5.2例
以逻辑回归为基模型,通过RFE来选定对预测结果影响最大的三个数据特征。
#递归特征消除
from pandas import read_csv
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
filename = 'pima.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names)
#数据分类
array = data.values
X = array[:, 0:8]
Y = array[:, 8]
#特征选定
model = LogisticRegression()
rfe = RFE(model,n_features_to_select=3)
#训练
fit = rfe.fit(X,Y)
print('特征个数:')
print(fit.n_features_)
print('被选特征:')
print(fit.support_)
print('特征排名:')
print(fit.ranking_)
6.主成分分析
6.1主成分分析(PCA)是使用线性代数来转换压缩数据,通常被称作数据降维,常见的数据降维方法除了PCA,还有LDA(线性判别分析),它本身也是一个分类型。
6.2PCA本质是将原始样本映射到维度更低的样本空间中,PCA为了样本映射后更有发散性;而LDA为了样本有最好的分类性能。
6.3PCA无监督的降维方法
6.4LDA有监督的降维方法
6.5聚类算法中,通常用PCA
6.6例
#PCA
from pandas import read_csv
from sklearn.decomposition import PCA
filename = 'pima.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names)
#数据分类
array = data.values
X = array[:, 0:8]
Y = array[:, 8]
pca = PCA(n_components=3)
fit = pca.fit(X)
print('解释方差: %s' % fit.explained_variance_ratio_)
print(fit.components_)
7.特征重要性
7.1袋装决策树算法(Bagging Decision Tree)、随机森林算法、极端随机算法都可以计算数据特征的重要性。
7.2例
#Extra Trees Classifier
from pandas import read_csv
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.linear_model import LogisticRegression
filename = 'pima.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names)
#数据分类
array = data.values
X = array[:, 0:8]
Y = array[:, 8]
model = ExtraTreesClassifier()
fit = model.fit(X,Y)
print(fit.feature_importances_)