当前位置:   article > 正文

分类模型-GridSearchCV-网格调参_gridsearchcv搜索参数

gridsearchcv搜索参数


前言

最近需要进行模型对比,验证算法好坏。

一、封装函数

封装成两个函数,一个建模时候使用初始参数,另一个采取网格调参进行建模。

其中Optimize_Params函数是需要多传入一个参数params,是取定模型之后对其进行参数优化,其格式为字典类型,后续代码会有详细展示。

  1. def Optimize_Params(model,params , x_train, y_train,x_test,y_test):
  2. optimized_model = GridSearchCV(estimator = model, param_grid = params, cv=10,n_jobs=-1)
  3. optimized_model.fit(x_train, y_train)
  4. # evalute_result = optimized_model.cv_results_['mean_test_score']
  5. # print('每轮迭代运行结果:{0}'.format(evalute_result))
  6. print('参数的最佳取值:{0}'.format(optimized_model.best_params_))#best_score_#查看最佳分数(此处为f1_score)
  7. print('最佳模型得分:{0}'.format(optimized_model.best_score_))#best_params_#查看最佳参数
  8. y_pred = optimized_model.predict(x_test)#测试集预测值
  9. print(classification_report(y_test, y_pred))
  10. print("\n\n")
  11. def init_Params(model,x_train, y_train,x_test,y_test):
  12. model.fit(x_train, y_train)
  13. y_pred = model.predict(x_test)#测试集预测值
  14. print(classification_report(y_test, y_pred))
  15. print("\n\n")

二、使用步骤

1.读入数据

选取UCI数据集中Heart数据,并进行简单的处理。

  1. from sklearn.preprocessing import LabelEncoder
  2. D_name='target'
  3. data = pd.read_csv("heart.csv")
  4. data["sex"].replace("male",0,inplace=True)
  5. data["sex"].replace("female",1,inplace=True)
  6. data["thal"].replace("fixed defect",0,inplace=True)
  7. data["thal"].replace("reversable defect",1,inplace=True)
  8. data["thal"].replace("normal",2,inplace=True)
  9. from sklearn.model_selection import train_test_split
  10. #导入你要分的数据特征X,标签Y
  11. x_train, x_test, y_train, y_test = train_test_split(data.drop(D_name,axis=1),data[D_name],test_size=0.3,random_state=random_state)

2.调用函数

2.1 DecisionTree

DecisionTreeClassifier 是一种基于决策树算法的分类器,可以根据不同的特征及其组合进行分类。以下是 DecisionTreeClassifier 常用的一些参数:

- criterion:特征选择准则。可以选择 "gini" 或 "entropy" 两种方法。默认是 "gini"。
- splitter:特征划分点的策略。可以选择 "best" 或 "random" 两种方式。默认是 "best"。
- max_depth:树的最大深度。默认是 None,表示无限制深度。
- min_samples_split:节点分裂所需的最小样本数。默认是2。
- min_samples_leaf:叶节点所需的最小样本数。默认是1。
- max_features:寻找最佳划分时应考虑的特征数量。可以是整数,浮点数或字符串。默认情况下,它等于所有特征数。

可以通过调用 `DecisionTreeClassifier().get_params().keys()` 方法查看所有参数的完整列表。根据你的具体任务需求,选择不同的参数进行调整,以获得更好的分类结果。常见的操作是通过网格搜索(Grid Search)或随机搜索(Random Search)技术来搜索最佳参数组合。

下面是一个简单的例子。

  1. from sklearn.tree import DecisionTreeClassifier
  2. # 预设各参数的不同选项值
  3. max_depth = [2,10,50,100,200,500]
  4. min_samples_split = [1,5,10,20]
  5. min_samples_leaf = [1,5,10,20]
  6. # 将各参数值以字典形式组织起来
  7. params = {'max_depth':max_depth, 'min_samples_split':min_samples_split,
  8. 'min_samples_leaf':min_samples_leaf}
  9. model = DecisionTreeClassifier(random_state=random_state)
  10. init_Params(model,x_train, y_train,x_test,y_test)
  11. Optimize_Params(model,params , x_train, y_train,x_test,y_test)


2.2 RandomForest

RandomForestClassifier 是一种基于决策树算法的集成学习分类器,它使用多个决策树进行训练和预测以提高预测准确率。以下是 RandomForestClassifier 常用的一些参数:

- n_estimators:随机森林中树的数量。默认是 100。
- criterion:特征选择准则。可以选择 "gini" 或 "entropy" 两种方法。默认是 "gini"。
- max_depth:每个决策树的最大深度。默认是 None,表示无限制深度。
- min_samples_split:节点分裂所需的最小样本数。默认是2。
- min_samples_leaf:叶节点所需的最小样本数。默认是1。
- max_features:寻找最佳划分时应考虑的特征数量。可以是整数,浮点数或字符串。默认情况下,它等于总特征数的平方根。
- bootstrap:是否在建立树时对数据进行自助采样。默认为 True。
- oob_score:是否计算袋装外估计(弃用样本)得分。默认为 False。
- random_state:随机种子。默认情况下,不设置该参数,意味着随机种子为 None。

可以通过调用 `RandomForestClassifier().get_params().keys()` 方法查看所有参数的完整列表。根据你的具体任务需求,选择不同的参数进行调整,以获得更好的分类结果。常见的操作是通过网格搜索(Grid Search)或随机搜索(Random Search)技术来搜索最佳参数组合。

下面是一个简单的例子

  1. from sklearn.ensemble import RandomForestClassifier
  2. criterion = ["gini","entropy"]
  3. min_samples_split = [1,2,3,4,5,10,15,20]
  4. params={'n_estimators':[10,120,500,1200],'max_depth':[5,15,30],
  5. "criterion":criterion,"min_samples_split":min_samples_split}
  6. model=RandomForestClassifier(random_state=random_state)
  7. init_Params(model,x_train, y_train,x_test,y_test)
  8. Optimize_Params(model,params , x_train, y_train,x_test,y_test)

 2.3 AdaBoost

AdaBoost 是一种集成学习方法,它将多个弱学习器组合为一个强学习器。AdaBoost 有许多可以调整的参数,下面是常用的几个参数:

1. n_estimators:基分类器的数量。默认为50。

2. learning_rate:学习率,控制每个弱分类器对最终分类器的贡献程度。较小的学习速率有助于提高训练的稳定性和泛化性能。默认值为1.0。

3. base_estimator:AdaBoost 算法使用的基分类器,默认为决策树分类器,也可以自定义其他分类器。

4. algorithm:选择 AdaBoost 算法实现,可以选择 SAMME.R 或 SAMME。默认是 SAMME.R,它是基于对概率的预测进行加权的版本,相较于SAMME,SAMME.R 的效果更好。

5. random_state:随机种子。默认情况下,不设置该参数,意味着随机种子为 None。

这些参数可以通过对应算法的 `get_params` 方法查看可选参数及默认值,也可以通过交叉验证等方法对参数进行调优。在使用时,需要根据具体任务需求和数据情况进行选择与调整。

  1. from sklearn.ensemble import AdaBoostClassifier
  2. from sklearn.tree import DecisionTreeClassifier
  3. max_depth = [1,3,5,10,20,50]
  4. n_estimators = [10,100,300,500]
  5. learning_rate = [0.01,0.05,0.1,0.2]
  6. algorithm = ["SAMME","SAMME.R"]
  7. params = {'n_estimators':n_estimators,'learning_rate':learning_rate,
  8. 'base_estimator__max_depth':max_depth,"algorithm":algorithm}
  9. model = AdaBoostClassifier(base_estimator = DecisionTreeClassifier(random_state=random_state))
  10. init_Params(model,x_train, y_train,x_test,y_test)
  11. Optimize_Params(model,params , x_train, y_train,x_test,y_test)

 2.4 GradientBoosting

GradientBoostingClassifier 是一种基于决策树算法的集成学习分类器,它使用多个决策树进行训练和预测以提高预测准确率。以下是 GradientBoostingClassifier 常用的一些参数:

- learning_rate:学习率,控制每个弱分类器对最终分类器的贡献程度。较小的学习速率有助于提高训练的稳定性和泛化性能。默认值为0.1。
- n_estimators:使得所选损失函数的决策树数量。默认是100,但选择更大的数字可以提高模型性能。
- criterion:特征选择准则。可以选择 "friedman_mse"、"mse" 或 "mae" 三种方法,默认是 "friedman_mse"。
- max_depth:决策树的最大深度。默认是3 。较大的深度通常表示更强的复杂性并且需要更长的时间来训练。
- min_samples_split:内部节点分裂所需的最小样本数。默认是2。
- min_samples_leaf:叶节点所需的最小样本数。默认是1。
- subsample:用于拟合单个基本估计量的子样本比例。默认是1.0。可以设置较小的值以使模型更加鲁棒。
- max_features:候选特征的最大数量。可以是整数,浮点数或者字符串 "auto"、"sqrt" 或 "log2",或者设置为 None(与 "sqrt" 相同)。默认情况下,它等于总特征数的平方根。
- random_state:随机种子。默认情况下,不设置该参数,意味着随机种子为 None。

可以通过调用 `GradientBoostingClassifier().get_params().keys()` 方法查看所有参数的完整列表。根据你的具体任务需求,选择不同的参数进行调整,以获得更好的分类结果。常见的操作是通过网格搜索(Grid Search)或随机搜索(Random Search)技术来搜索最佳参数组合。

  1. from sklearn.ensemble import GradientBoostingClassifier
  2. max_depth = [1,5,10]
  3. n_estimators = [10,50,100,300,500]
  4. min_samples_split=[1,5,10]
  5. learning_rate= np.arange(0.1, 1, 0.2)
  6. min_samples_leaf=[1,5,10]
  7. params = {'learning_rate':learning_rate,'n_estimators':n_estimators,'max_depth':max_depth,
  8. "min_samples_split":min_samples_split,"min_samples_leaf":min_samples_leaf}
  9. model = GradientBoostingClassifier(random_state=random_state)
  10. init_Params(model,x_train, y_train,x_test,y_test)
  11. Optimize_Params(model,params , x_train, y_train,x_test,y_test)

 2.5 CatBoost

CatBoost 是一种基于梯度提升树的机器学习算法,它可以自动处理分类特征并进行高效的训练。CatBoost 有许多可以调整的参数,下面是一些常用的参数:

1. iterations:树的数量。树的数量越多,模型就越复杂,可能会出现过拟合的情况。默认值为1000。

2. learning_rate:学习率,控制每个弱分类器对最终分类器的影响程度。较小的学习速率可以提高模型的鲁棒性和泛化性能,但是会使模型收敛速度变慢。默认值为0.03。

3. depth:树的深度。树的深度越大,模型就越复杂,容易发生过拟合。默认值为6。

4. l2_leaf_reg:L2 正则化系数。L2 正则化可以有效地防止过拟合,但如果设置得太高,则可能会导致欠拟合。默认值为3。

5. loss_function:损失函数。CatBoost 支持多种损失函数,比如对数似然函数(Logloss)、平均绝对误差(MAE)和均方误差(MSE)等。默认值为 Logloss。

6. eval_metric:评估指标。用于测量模型性能的指标,如错误率、精度和 AUC 等。默认值为 Logloss。

7. cat_features:分类特征的列索引列表。CatBoost 能够自动处理分类特征,但是如果你已经知道哪些特征是分类特征,可以将这些特征的列索引指定为 cat_features 参数,以提高模型的准确性。

这些参数可以通过对应算法的 `get_params` 方法查看可选参数及默认值,也可以通过交叉验证等方法对参数进行调参。在使用时,需要根据具体任务需求和数据情况进行选择与调整。

  1. from catboost import Pool, CatBoostClassifier
  2. iterations = [100,500,800]
  3. depth=[1,2,3,4,5,10,20,30]
  4. learning_rate= np.arange(0.1, 1, 0.1)
  5. l2_leaf_reg=[1,2,3,4,5,10,20,30]
  6. params = {'learning_rate':learning_rate,'depth':depth,'iterations':iterations,'l2_leaf_reg':l2_leaf_reg}
  7. model = CatBoostClassifier(loss_function='Logloss',random_state=random_state,verbose=False,)
  8. init_Params(model,x_train, y_train,x_test,y_test)
  9. Optimize_Params(model,params , x_train, y_train,x_test,y_test)

这里可以看到,调参后效果没有初始参数的效果好。所以启发我们可以再调参数的时候把初始参数也放进去params中,或者将可调参数个数与范围都扩大,寻出相对最优参数 。

2.6 ExtraTrees

ExtraTreesClassifier() 是一个分类算法模型,它具有以下一些常用参数:

- n_estimators:决策树的数量,默认为100。
- criterion:衡量分裂质量的指标。支持 "gini" 和 "entropy" 两种方式,默认是 "gini"。
- max_depth:决策树的最大深度。如果不指定,则默认不设置最大深度。
- min_samples_split:拆分内部节点所需的最小样本数。小于此值的内部节点将不再分裂。默认是2。
- min_samples_leaf:叶节点最少包含的样本数。默认是1。
- max_features:寻找最佳分割时要考虑的功能数量。可以是整数、浮点数或字符串。如果是整数,则将考虑max_features个特性;如果是浮点数,则考虑max_features*N个特征,其中N是特征总数。如果是 "sqrt" 或 "auto",则max_features = sqrt(n_features); 如果是 "log2" 则 max_features = log2(n_features)。默认是 "auto",它等同于 "sqrt"。
- bootstrap:是否在构建树时使用自举样本。默认是 False,即不使用。
- random_state:随机种子。如果指定了这个数字,则每次运行对于给定的数据集都会得到相同的结果。
- n_jobs:并行计算的数量。-1 表示所有可用的 CPU。默认是 None,表示只使用一个 CPU。

你可以通过调用 `ExtraTreesClassifier().get_params().keys()` 查看所有参数的完整列表。

  1. from sklearn.ensemble import ExtraTreesClassifier
  2. n_estimators= [10,100,300,500]
  3. criterion = ["gini", "entropy"]
  4. min_samples_leaf = [1,5,10]
  5. max_depth = [1,5,10,20,50]
  6. params = {'n_estimators':n_estimators,
  7. "criterion":criterion,
  8. "min_samples_leaf":min_samples_leaf,
  9. "max_depth":max_depth}
  10. model = ExtraTreesClassifier(random_state=random_state)
  11. init_Params(model,x_train, y_train,x_test,y_test)
  12. Optimize_Params(model,params , x_train, y_train,x_test,y_test)

2.7 SVC

SVM (Support Vector Machine) 是一种常见的分类算法,而 SVC (Support Vector Classifier) 是 SVM 在分类问题上的具体实现。以下是 SVC 常用的一些参数:

- C:正则化参数。它越小,正则化的强度就越强。默认值为1.0。
- kernel:核函数类型。可以选择 "linear"、"poly"、"rbf"、"sigmoid" 四种方式,默认是 "rbf" 核函数。
- degree:核函数的次数(如果使用多项式核函数)。默认是3。
- gamma:核函数的系数(如果使用 rbf、poly 或 sigmoid 核函数)。默认是 "scale",可以选择 "auto" 或任何数字。
- coef0:核函数中独立项的系数。只有在使用 "poly" 和 "sigmoid" 核函数时才需设置。默认值为0.0。
- shrinking:是否使用缩放启发式算法来加速训练。默认为 True。
- tol:停止拟合的容忍度。表示如果两次迭代之间的差异小于 tol,则认为算法已经收敛。默认值为1e-4。
- probability:是否启用概率估计。默认为 False,不启用概率估计。
- class_weight:每个类别的权重。可以是 "balanced" 权重,也可以使用字典或数组自定义权重。默认情况下,所有类别的权重都是相等的。

你可以通过调用 `SVC().get_params().keys()` 方法查看所有参数的完整列表。根据你的具体任务需求,选择不同的参数进行调整,以获得更好的分类结果。常见的操作是通过网格搜索(Grid Search)或随机搜索(Random Search)技术来搜索最佳参数组合。

  1. from sklearn.svm import SVC
  2. kernel=['rbf','linear','poly','sigmoid']
  3. C=[0.1,0.5,1,2,5]
  4. probability = [True,False]
  5. tol = [1e-3,1e-5,1e-10]
  6. params = {'kernel':kernel,'C':C,"probability":probability,"tol":tol}
  7. model = SVC(random_state=random_state)
  8. init_Params(model,x_train, y_train,x_test,y_test)
  9. Optimize_Params(model,params , x_train, y_train,x_test,y_test)

 2.8 LinearSVC

LinearSVC 是一个支持向量机分类算法的实现,它具有以下一些常用参数可供调整:

- C:正则化参数。它越小,正则化的强度就越强。默认值为1.0。
- loss:损失函数。可以是 "hinge" 或 "squared_hinge" 两种方式,默认是 "squared_hinge"。
- penalty:正则化选项。可以选择 "l1" 或 "l2" 正则化,或者将其设置为 "None" 不使用正则化。默认是 "l2" 正则化。
- dual:是否使用对偶形式。如果样本数量>特征数量,则选择 False;如果样本数量<特征数量,则选择 True。默认是 True。
- tol:停止拟合的容忍度。表示如果两次迭代之间的差异小于 tol,则认为算法已经收敛。默认值为1e-4。
- multi_class:多类分类中选择损失函数的方式。可以选择 "ovr" 或 "crammer_singer" 两种方法。默认是 "ovr",表示一对多方法。
- fit_intercept:是否应该计算截距。默认是 True。
- intercept_scaling:插入项的缩放大小。默认是 1。
- class_weight:每个类别的权重。可以是 "balanced" 权重,也可以使用字典或数组自定义权重。默认情况下,所有类别的权重都是相等的。

你可以通过调用 `LinearSVC().get_params().keys()` 方法查看所有参数的完整列表。根据你的具体任务需求,选择不同的参数进行调整,以获得更好的分类结果。

  1. from sklearn.svm import LinearSVC
  2. loss = ["hinge","squared_hinge"]
  3. C=[0.01,1,10,100]
  4. params = {"C":C,"loss":loss}
  5. model =LinearSVC(random_state=random_state)
  6. init_Params(model,x_train, y_train,x_test,y_test)
  7. Optimize_Params(model,params , x_train, y_train,x_test,y_test)

 这里也是一样的,调参后效果没有初始参数的效果好。可调参数个数与范围都扩大,寻出相对最优参数 。

2.9 xgboost

XGBoost 是一种基于梯度提升决策树的机器学习算法,它通过优化树模型的结构和分裂点来提高模型性能。XGBoost 有许多可以调整的参数,下面是一些常用的参数:

1. max_depth:树的最大深度。树的深度越大,模型就越复杂,可能会出现过拟合的情况。默认值为6。

2. learning_rate:学习率,控制每个弱分类器对最终分类器的影响程度。较小的学习速率可以提高模型的鲁棒性和泛化性能,但是会使模型收敛速度变慢。默认值为0.1。

3. n_estimators:树的数量。树的数量越多,模型就越复杂,可能会出现过拟合的情况。默认值为100。

4. subsample:子采样率。随机选择部分训练数据以加速学习和减少过拟合的风险。默认值为1,表示不进行采样。

5. colsample_bytree:列采样率。随机选择特征子集以加速学习和减少过拟合的风险。默认值为1,表示不进行采样。

6. reg_alpha:L1 正则化系数。L1 正则化可以有效地防止过拟合,但如果设置得太高,则可能会导致欠拟合。默认值为0。

7. reg_lambda:L2 正则化系数。L2 正则化可以有效地防止过拟合,但如果设置得太高,则可能会导致欠拟合。默认值为1。

8. gamma:分裂阈值的最小增益。控制树的复杂度和叶子节点的数量。默认值为0,表示无限制。

这些参数可以通过对应算法的 `get_params` 方法查看可选参数及默认值,也可以通过交叉验证等方法对参数进行调参。在使用时,需要根据具体任务需求和数据情况进行选择与调整。

  1. import xgboost as xgb
  2. subsample= np.linspace(0.1,1,10)
  3. learning_rate = [0.01,0.1,0.2,0.001,1]
  4. n_estimators = [10,100,500]
  5. max_depth = [3,10,20]
  6. params = {'learning_rate':learning_rate,'n_estimators':n_estimators,\
  7. 'max_depth':max_depth,'subsample':subsample}
  8. other_params = {'booster': 'gbtree',
  9. 'objective': 'reg:linear',
  10. 'colsample_bytree': 0.85,
  11. 'eta': 0.05,
  12. 'seed': random_state,
  13. 'eval_metric': 'rmse'}
  14. model=xgb.XGBClassifier(**other_params)#选择邻近的5个点
  15. init_Params(model,x_train, y_train,x_test,y_test)
  16. Optimize_Params(model,params , x_train, y_train,x_test,y_test)

2.10 LogisticRegression

逻辑回归是一种经典的分类算法,它基于最大似然估计来构建模型,可以通过优化损失函数来进行训练。逻辑回归模型的参数通常比较简单,下面是一些常用的参数:

1. penalty:正则化项。逻辑回归模型支持 L1 正则化和 L2 正则化,分别由参数 "l1" 和 "l2" 控制。正则化可以有效地防止过拟合,提高模型的准确性。

2. C:正则化系数。C 值越小,正则化的强度越大。C 值越大,正则化的强度越小,模型的复杂度也会增加。调整 C 值可以控制模型的泛化能力和鲁棒性。

3. solver:优化算法。逻辑回归模型支持多种优化算法,如 "lbfgs"、"liblinear"、"newton-cg" 和 "sag" 等。默认值为 "lbfgs",通常情况下无需更改。

4. max_iter:最大迭代次数。当模型迭代达到最大次数时,会停止训练。默认值为100。

5. multi_class:多分类问题。当处理多分类问题时,可以使用 "ovr" 或 "multinomial" 参数。"ovr" 表示使用一对多策略进行多分类,"multinomial" 表示使用 Softmax 函数进行多分类。默认值为 "ovr"。

这些参数可以通过对应算法的 `get_params` 方法查看可选参数及默认值,也可以通过交叉验证等方法对参数进行调参。在使用时,需要根据具体任务需求和数据情况进行选择与调整。

  1. from sklearn.linear_model import LogisticRegression
  2. solver = ["newton-cg","lbfgs","liblinear","sag","saga"]
  3. tol = [1e-3,1e-5,1e-10]
  4. params = {'C':[0.01,0.1,1,5],'penalty':['l1','l2'],
  5. "solver":solver,"tol":tol}
  6. model = LogisticRegression(random_state=random_state)
  7. init_Params(model,x_train, y_train,x_test,y_test)
  8. Optimize_Params(model,params , x_train, y_train,x_test,y_test)

2.11 lightgbm

LightGBM 是一种基于梯度提升决策树的机器学习算法,它通过优化树模型的结构和分裂点来提高模型性能。LightGBM 有许多可以调整的参数,下面是一些常用的参数:

1. num_leaves:叶子节点的数量。树的深度由 num_leaves 控制。num_leaves 越大,模型就越复杂,可能会出现过拟合的情况。默认值为31。

2. learning_rate:学习率,控制每个弱分类器对最终分类器的影响程度。较小的学习速率可以提高模型的鲁棒性和泛化性能,但是会使模型收敛速度变慢。默认值为0.1。

3. n_estimators:树的数量。树的数量越多,模型就越复杂,可能会出现过拟合的情况。默认值为100。

4. subsample:子采样率。随机选择部分训练数据以加速学习和减少过拟合的风险。默认值为1,表示不进行采样。

5. colsample_bytree:列采样率。随机选择特征子集以加速学习和减少过拟合的风险。默认值为1,表示不进行采样。

6. reg_alpha:L1 正则化系数。L1 正则化可以有效地防止过拟合,但如果设置得太高,则可能会导致欠拟合。默认值为0。

7. reg_lambda:L2 正则化系数。L2 正则化可以有效地防止过拟合,但如果设置得太高,则可能会导致欠拟合。默认值为1。

8. min_child_samples:每个叶子节点需要的最小样本数。当一个叶子节点的样本数小于 min_child_samples 时,停止分裂。默认值为20。

9. max_depth:树的最大深度。树的深度越大,模型就越复杂,可能会出现过拟合的情况。默认值为-1,表示不限制深度。

这些参数可以通过对应算法的 `get_params` 方法查看可选参数及默认值,也可以通过交叉验证等方法对参数进行调参。在使用时,需要根据具体任务需求和数据情况进行选择与调整。

  1. import lightgbm as lgb
  2. boosting_type = ["gbdt","dart","goss"]
  3. params = {'learning_rate': np.arange(0.1,1,0.1), 'max_depth':[10,100,300,500,1000] ,
  4. 'n_estimators':[10,100,300,500,1000],"boosting_type":boosting_type}
  5. model = lgb.LGBMClassifier(random_state=random_state)
  6. init_Params(model,x_train, y_train,x_test,y_test)
  7. Optimize_Params(model,params , x_train, y_train,x_test,y_test)

总结

        针对每种模型,都有他们对应的参数可以进行调整,我们如果有足够的算力的话,可以考虑的参数个数多点,参数值范围广一点。

        如果我们考虑的参数受到限制的话,甚至可能效果是会比初始参数的效果要差一些,毕竟网格搜索就是更多的网格(参数)会搜索更好的结果。

        其实我们在建模之前,不妨先对数据进行处理,可以挑选有效特征列(属性),这样的话,能够使得用较少的属性,获取更大的指标值(accuracy,f1等等)。

        读者不妨可参考模糊粗糙集知识。对数据集筛选,进行属性约简。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/463721?site
推荐阅读
相关标签
  

闽ICP备14008679号