怎么做网站能快速赚钱,高校学生红色网站建设,抖音推广链接,网站运行与维护1、pca降维#xff1a;目的是提升模型训练速度
定义#xff1a; 使用方法#xff1a;给训练数据或者测试数据进行降维处理 给训练数据降维 给测试数据降维#xff1a;这里1就要用transform#xff0c;而不是fit_transform#xff0c;因为之前训练数据降维时特征已经确定…1、pca降维目的是提升模型训练速度
定义 使用方法给训练数据或者测试数据进行降维处理 给训练数据降维 给测试数据降维这里1就要用transform而不是fit_transform因为之前训练数据降维时特征已经确定测试数据提取的特征要和训练数据保持一致。 2、交叉验证目的是保证模型的测试数据和训练数据划分清楚从而对比选出得分最高的模型保证数据划分的稳定性而不是之前随机划分。
概念每次进行数据划分都是随机的所以没法保证稳定的模型精确度 方法一k折交叉验证将所有数据划分成k份每次训练用1/k作为测试数据其余数据作为训练数据使用方式是先通过sklearn库中的model_selection导入KFold然后设定好KFold的n_splits参数之后通过模型的split方法划分训练数据和测试数据返回的是一个生成器其中会按照数据的下标划分好数据使用时可以通过数组索引的方式数组[数组]。注意返回给你的数据有k份每一份数据都是取其中1/k作为测试数据其余数据作为训练数据且每份数据都是所有数据的下标。方法二StratifiedKFold分层KFold相对于方法一挑着分分的更细了使用方法类似K折交叉验证。注意返回给你的数据有k份每一份数据都是取其中1/k作为测试数据其余数据作为训练数据且每份数据都是所有数据的下标。应用示例
from sklearn.model_selection import KFold # 这是k折交叉验证的包
from sklearn.model_selection import StratifiedKFold # 这是分层KFold的包
# 调用
kf KFold(n_splits5) # n_splits等于k折设置为几就会把数据分成几份
st StratifiedKFold(n_splits5) # n_splits等于k折设置为几就会把数据分成几份
iterable_kf kf.split(Date,Target) # 生成的是迭代器最好用for循环调用
iterable_st st.split(Date,Target) # 生成的是迭代器最好用for循环调用
for train_index, test_index in st_iterable:x_train Date[train_index] # 注意这种取数据的方式需要Date是np.array类型的数组才可以取到对应行y_train Target[train_index]x_test Date[test_index]y_test Target[test_index]···3、网格交叉验证GridSearchCV存在的意义就是自动调参只要把参数输进去就能给出最优化的结果和参数
举例SVM模型选择最优惩罚因子C和最优高斯核函数对应的参数gammagamma参数只有核函数为高斯时才有
# 导包
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_yTrue)网格交叉验证参数说明
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(estimatorsvc,param_gridparam_grid,n_jobs-1,cv5)
gv.fit(data,target)
# 获取网格交叉验证最终获取的一些最优属性
gv.best_score_,gv.best_params_,gv.best_estimator_
# (0.9866666666666667, {C: 10, gamma: 0.05}, SVC(C10, gamma0.05))