Python/scikit-learn机器学习库(特征选取)
2017-03-16 13:58
337 查看
去除方差小的特征
设置一个方差阈值,没有达到这个方差阈值的特征都会被丢弃。
VarianceThreshold,算法输入只要求特征(X),不需要输入结果(Y)。
from sklearn.feature_selection import VarianceThreshold
X=[[feature1,feature2,…],…]
sel=VarianceThreshold(threshold=xx)
print(sel.fit_transform(X))
单变量特征选取
单变量特征提取的原理是分别计算每个特征的某个统计指标,根据该指标来选取特征。
SelectKBest、SelectPercentile,前者选择排名前k个的特征,后者选择排名在前k%的特征。选择的统计指标需要指定,对于regression问题,使用f_regression指标;对于classification问题,可以使用chi2或者f_classif指标。
from sklearn.feature_selection import SelectKBest,chi2
X_new=SelectKBest(chi2,k=2).fit_transform(test_X,test_Y)
False Positive Rate,假阳性率
chi2,卡方统计量,X中特征取值必须非负。卡方检验用来测度随机变量之间的依赖关系。通过卡方检验得到的特征之间是最可能独立的随机变量,因此这些特征的区分度很高。
循环特征选取
不单独地检验某个特征的价值,而是检验特征集的价值。对于一个数量为n的特征集合,子集的个数为2的n次方减一。通过指定一个学习算法,通过算法计算所有子集的error,选择error最小的子集作为选取的特征。
RFE
对初始特征集合中每个特征赋予一个初始权重。
训练,将权重最小的特征移除。
不断迭代,直到特征集合的数目达到预定值。
from sklearn.svm import SVC
from sklearn.feature_selection import RFE
//X为样本集合,每个样本为一个数组,数组元素为各个特征值,Y样本的评分
svc=SVC(kernel=”linear”,C=1)
rfe=RFE(estimator=svc,n_features_to_select=5,step=1)
X_new=rfe.fit_transform(X,Y)
RFECV
在RFE训练时,增加交叉验证。
L1-base
在线性回归模型中,每一个特征代表一个w,若得到的w系数等于或接近0,则说明这些特征不重要。
LinearSVC
参数C控制特征系数稀疏度,C的值越小,选择的特征数越少。
from sklearn.svm import LinearSVC
X_new=LinearSVC(C=0.01,penalty=”l1”,dual=False).fit_transform(x,y)
决策树特征选取
通过决策树可以计算特征的重要性,抛弃不太重要的特性。
from sklearn.ensemble import ExtraTreesClassifier
clf=ExtraTreesClassifier()
X_new=clf.fit(x,y).transform(x)
//各个特征重要性
print(clf.feature_importances)
sklearn分类数据
sklearn.datasets.make_classification用来随机产生一个多分类问题。
n_features=n_informative+n_redundant+n_repeated。
n_clusters_per_class 每个分类的集群数
import sklearn.datasets
(x,y)=make_classification(n_samples=,
n_features=,
n_informative=,
n_redundant=,
n_repeated=,
n_classes=,
random_state=,
shuffle=False
)
设置一个方差阈值,没有达到这个方差阈值的特征都会被丢弃。
VarianceThreshold,算法输入只要求特征(X),不需要输入结果(Y)。
from sklearn.feature_selection import VarianceThreshold
X=[[feature1,feature2,…],…]
sel=VarianceThreshold(threshold=xx)
print(sel.fit_transform(X))
单变量特征选取
单变量特征提取的原理是分别计算每个特征的某个统计指标,根据该指标来选取特征。
SelectKBest、SelectPercentile,前者选择排名前k个的特征,后者选择排名在前k%的特征。选择的统计指标需要指定,对于regression问题,使用f_regression指标;对于classification问题,可以使用chi2或者f_classif指标。
from sklearn.feature_selection import SelectKBest,chi2
X_new=SelectKBest(chi2,k=2).fit_transform(test_X,test_Y)
False Positive Rate,假阳性率
chi2,卡方统计量,X中特征取值必须非负。卡方检验用来测度随机变量之间的依赖关系。通过卡方检验得到的特征之间是最可能独立的随机变量,因此这些特征的区分度很高。
循环特征选取
不单独地检验某个特征的价值,而是检验特征集的价值。对于一个数量为n的特征集合,子集的个数为2的n次方减一。通过指定一个学习算法,通过算法计算所有子集的error,选择error最小的子集作为选取的特征。
RFE
对初始特征集合中每个特征赋予一个初始权重。
训练,将权重最小的特征移除。
不断迭代,直到特征集合的数目达到预定值。
from sklearn.svm import SVC
from sklearn.feature_selection import RFE
//X为样本集合,每个样本为一个数组,数组元素为各个特征值,Y样本的评分
svc=SVC(kernel=”linear”,C=1)
rfe=RFE(estimator=svc,n_features_to_select=5,step=1)
X_new=rfe.fit_transform(X,Y)
RFECV
在RFE训练时,增加交叉验证。
L1-base
在线性回归模型中,每一个特征代表一个w,若得到的w系数等于或接近0,则说明这些特征不重要。
LinearSVC
参数C控制特征系数稀疏度,C的值越小,选择的特征数越少。
from sklearn.svm import LinearSVC
X_new=LinearSVC(C=0.01,penalty=”l1”,dual=False).fit_transform(x,y)
决策树特征选取
通过决策树可以计算特征的重要性,抛弃不太重要的特性。
from sklearn.ensemble import ExtraTreesClassifier
clf=ExtraTreesClassifier()
X_new=clf.fit(x,y).transform(x)
//各个特征重要性
print(clf.feature_importances)
sklearn分类数据
sklearn.datasets.make_classification用来随机产生一个多分类问题。
n_features=n_informative+n_redundant+n_repeated。
n_clusters_per_class 每个分类的集群数
import sklearn.datasets
(x,y)=make_classification(n_samples=,
n_features=,
n_informative=,
n_redundant=,
n_repeated=,
n_classes=,
random_state=,
shuffle=False
)
相关文章推荐
- Python/scikit-learn机器学习库(特征选取)
- Python/scikit-learn机器学习库(SVM支持向量机)
- Python - Scikit-Learn 的 数据加载+数据标准化+特征的选取
- Python/scikit-learn机器学习库(线性、二次判别分析)
- python/scikit-learn机器学习库(回归分析)
- [Python] 机器学习库 Scikit-learn之SVM
- 转 :scikit-learn的GBDT工具进行特征选取。
- python的scikit-learn将特征转成one-hot特征的方法
- scikit-learn的GBDT工具进行特征选取。
- Python机器学习 scikit-learn机器学习库
- python RandomForestClassifier 特征选取问题
- Python:scikit-learn机器学习库
- [Python & Machine Learning] 学习笔记之scikit-learn机器学习库
- Python/scikit-learn机器学习库(决策树)
- python的scikit-learn将特征转成one-hot特征
- Learn Python The Hard Way学习(0) - 安装
- Hard way to learn python 笔记6,7
- 一个老程序员的建议(《Learn Python The Hard Way, 2nd Edition》尾声)
- Hard way to learn python 笔记19-20
- Learn Python The Hard Way学习(2) - 注释和#号