数据挖掘——建模调参

常用模型:

线性回归,模型决策树模型 ,GBDT模型,XGBoost模型 ,LightGBM模型

简单的线性回归,可以用sklearn

from sklearn.linear_model import LinearRegression
model = LinearRegression(normalize=True)
model = model.fit(train_X, train_y)

当我们的模型简单构建出来会发现预测或者拟合的效果并不好,那么我们就要反过去看我们的数据是否出现了问题。这里说数据的问题更多的是指,符不符合模型的条件。

当我们在选择或者不选择一个模型,首先要考虑这个模型适用的条件,要满足那些基本假设。举个不恰当的例子,我们不管三七二十一,用直线去拟合一个曲线,那么必然是不会取得一个好的效果。

交叉验证(Cross Validation)

五折交叉验证

使用sklearn

from sklearn.model_selection import cross_val_score
#Evaluate a score by cross-validation
from sklearn.metrics import mean_absolute_error,  make_scorer
#Mean absolute error regression loss
#Make a scorer from a performance metric or loss function.

嵌入式特征选择

在过滤式和包裹式特征选择方法中,特征选择过程与学习器训练过程有明显的分别。而嵌入式特征选择在学习器训练过程中自动地进行特征选择。嵌入式选择最常用的是L1正则化与L2正则化。在对线性回归模型加入两种正则化方法后,他们分别变成了岭回归与Lasso回归。

#引入子包
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Ridge
from sklearn.linear_model import Lasso
#构成模型组
models = [LinearRegression(),
          Ridge(),
          Lasso()]
#对于每个循环,并将返回的分数,返回结果result字典
result = dict()
for model in models:
    model_name = str(model).split('(')[0]
    scores = cross_val_score(model, X=train_X, y=train_y_ln, verbose=0, cv = 5, scoring=make_scorer(mean_absolute_error))
    result[model_name] = scores
    print(model_name + ' is finished')
#取出得分进行对比
result = pd.DataFrame(result)
result.index = ['cv' + str(x) for x in range(1, 6)]
result

模型调参

  • 贪心算法
  • 网格调参
  • 贝叶斯调参

猜你喜欢

转载自blog.csdn.net/qq_45175218/article/details/105255693