特征选择是什么
特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也可以不改变值,但是选择后地特征维数肯定比选择前小,毕竟我们只选择了其中地一部分特征。
sklearn特征选择API
主要方法(三大武器):
其他特征选择方法
特征选择的原因
我们本次机器学习的课程使用的python程序库:
sklearn
在键盘上按win+R,输入cmd,确定后,输入 pip install sklearn
feature_selection 意思是特征选择
Variance 意思是方差
Threshold 意思是阈值
VarianceThreshold(threshold=0.0) 删除所有低方差特征
Variance.fit_transform(X)
X:numpu array 格式地数据[n_samples, n_features]
返回值:训练集差异低于threshold地特征将被删除。
默认值是保留所有非零方差特征,即删除所有样本中具有相同值地特征
from sklearn.feature_selection import VarianceThreshold
def var():
"""
特征选择-删除低方差地特征
:return: None
"""
# VarianceThreshold(threshold=0.0) 删除所有低方差特征
# Variance.fit_transform(X)
# X:numpu array 格式地数据[n_samples, n_features]
# 返回值:训练集差异低于threshold地特征将被删除。
# 默认值是保留所有非零方差特征,即删除所有样本中具有相同值地特征
var = VarianceThreshold(threshold=0.0)
data = var.fit_transform([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]])
source = var.inverse_transform(data)
print(source)
# var.inverse_transform(data)得到数据可知,在VarianceThreshold中数据不可逆
"""
原始数据:
[[0, 2, 0, 3],
[0, 1, 4, 3],
[0, 1, 1, 3]]
source 得到的数据:
[[0 2 0 0]
[0 1 4 0]
[0 1 1 0]]
data 数据:
[[2 0]
[1 4]
[1 1]]
Threshold = 0.0 即去除掉方差为0地特征
"""
print(data)
return None
if __name__ == '__main__':
var()
from sklearn.decomposition import PCA
def pca():
"""
主成分分析进行特征降维
:return: None
"""
# PCA(n_components=0.9) 将爱护据分解为较低维数空间
# PCA.fit_transform(X)
# X:numpy array格式的数据[n_samples, n_features]
# 返回值:转换后指定维数的array
pca = PCA(n_components=0.9)
data = pca.fit_transform([[2, 8, 4, 5], [6, 3, 0, 8], [5, 4, 9, 1]])
source = pca.inverse_transform(data)
print(source)
print(data)
"""
原始数据:
[[2, 8, 4, 5],
[6, 3, 0, 8],
[5, 4, 9, 1]]
source 数据:
[[ 2.0000000e+00 8.0000000e+00 4.0000000e+00 5.0000000e+00]
[ 6.0000000e+00 3.0000000e+00 -8.8817842e-16 8.0000000e+00]
[ 5.0000000e+00 4.0000000e+00 9.0000000e+00 1.0000000e+00]]
data 数据:
[[ 1.22879107e-15 3.82970843e+00]
[ 5.74456265e+00 -1.91485422e+00]
[-5.74456265e+00 -1.91485422e+00]]
"""
return None
if __name__ == '__main__':
pca()