常用模型:
线性回归,模型决策树模型 ,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
模型调参
- 贪心算法
- 网格调参
- 贝叶斯调参