机器学习——pca降维/交叉验证/网格交叉验证

1、pca降维:目的是提升模型训练速度

  • 定义:
    机器学习——pca降维/交叉验证/网格交叉验证_第1张图片
  • 使用方法:给训练数据或者测试数据进行降维处理
    • 给训练数据降维
      机器学习——pca降维/交叉验证/网格交叉验证_第2张图片
    • 给测试数据降维:这里1就要用transform,而不是fit_transform,因为之前训练数据降维时特征已经确定,测试数据提取的特征要和训练数据保持一致。
      机器学习——pca降维/交叉验证/网格交叉验证_第3张图片

2、交叉验证:目的是保证模型的测试数据和训练数据划分清楚,从而对比选出得分最高的模型,保证数据划分的稳定性,而不是之前随机划分。

  • 概念:每次进行数据划分都是随机的,所以没法保证稳定的模型精确度
    机器学习——pca降维/交叉验证/网格交叉验证_第4张图片
  • 方法一:k折交叉验证(将所有数据划分成k份,每次训练用1/k作为测试数据,其余数据作为训练数据),使用方式是先通过sklearn库中的model_selection导入KFold,然后设定好KFold的n_splits参数,之后通过模型的split方法划分训练数据和测试数据,返回的是一个生成器,其中会按照数据的下标划分好数据,使用时可以通过数组索引的方式(数组[数组])。
  • 方法二:StratifiedKFold(分层KFold):相对于方法一,挑着分,分的更细了,使用方法类似K折交叉验证。

3、网格交叉验证:GridSearchCV存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数

  • 举例:SVM模型选择最优惩罚因子C和最优高斯核函数对应的参数gamma(gamma参数只有核函数为高斯时才有)
# 导包
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC

# 导入数据
data, target = load_iris(return_X_y=True)
'''
网格交叉验证参数说明:
estimator:模型对象,不需要带参数,只需要输入模型对象即可
param_grid:网格参数,通过字典形式(键为模型参数名字符串,值为可能的数值列表)输入,每个参数需要提供多个值,会选择最优组合
n_job:多进程,-1表示适用所有处理器CPU
cv:默认分成5份,分的方法类似k折交叉验证,属于内部操作
'''
svc = SVC()
param_grid = {
    'C':[0.1, 1,10,15],
    'gamma':[0.01,0.05,0.1,0.5,1]
}
gv = GridSearchCV(estimator=svc,param_grid=param_grid,n_jobs=-1,cv=5)
gv.fit(data,target)
# 获取网格交叉验证最终获取的一些最优属性
gv.best_score_,gv.best_params_,gv.best_estimator_ 
# (0.9866666666666667, {'C': 10, 'gamma': 0.05}, SVC(C=10, gamma=0.05))

你可能感兴趣的:(机器学习与深度学习,机器学习,人工智能)