业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已
(看看就好)
特征工程是使用专业背景只是和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。
意义:会直接影响机器学习的效果
通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程
sklearn.preprocessing
why?
为了让数据同等重要。不会因某些数值差距比较大,单一地影响(支配)最后结果。
通过对原始数据进行变换吧数据映射到(默认为[0,1])之间
视频12 ——8:00~
导入:
from sklearn.preprocessing import MinMaxScaler, StandardScaler
使用例子:
def minmax_demo():
"""
归一化
:return:
"""
# 1、获取数据
data = pd.read_csv("dating.txt")
data = data.iloc[:, :3]
print("data:\n", data)
# 2、实例化一个转换器类
transfer = MinMaxScaler(feature_range=[2, 3])
# 3、调用fit_transform
data_new = transfer.fit_transform(data)
print("data_new:\n", data_new)
return None
异常值或缺失值刚好为 最大值,最小值。那就会影响比较大了。鲁棒性(稳定性)较差
通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内
导入
from sklearn.preprocessing import StandardScaler
def stand_demo():
"""
标准化
:return:
"""
# 1、获取数据
data = pd.read_csv("dating.txt")
data = data.iloc[:, :3]
print("data:\n", data)
# 2、实例化一个转换器类
transfer = StandardScaler()
# 3、调用fit_transform
data_new = transfer.fit_transform(data)
print("data_new:\n", data_new)
return None
在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。
降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量过程。
降维 - 降低维度
ndarray
维数:嵌套的层数
0维 标量
1维 向量
2维 矩阵
3维
n维
降低的对象:二维数组
此处的降维:降低特征的个数
效果:特征与特征之间不相关
主要探究特征本身特点,特征与特征和目标值之间关联
算法自动选择特征(特征与目标)
sklearn.feature_selection
将数据分解为较低维数空间
n_components:
PCA.fit_transform(X)
X:numpy array格式的数据
[n_samples,n_features]
返回值:转换后指定维度的array
导入PCA
from sklearn.decomposition import PCA
def pca_demo():
"""
PCA降维
:return:
"""
data = [[2,8,4,5], [6,3,0,8], [5,4,9,1]]
# 1、实例化一个转换器类
transfer = PCA(n_components=0.95)
# 2、调用fit_transform
data_new = transfer.fit_transform(data)
print("data_new:\n", data_new)
return None