Ajuste de modelado de minería de datos

Modelos comunes:

Regresión lineal, modelo de árbol de decisión, modelo GBDT, modelo XGBoost, modelo LightGBM

Regresión lineal simple, puede usar sklearn

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

Cuando nuestro modelo se construye simplemente, encontraremos que el efecto de la predicción o el ajuste no es bueno, entonces tenemos que ver si hay un problema con nuestros datos. El problema de los datos aquí es más que el símbolo no cumple con las condiciones del modelo.

Cuando elegimos o no un modelo, primero debemos considerar las condiciones bajo las cuales este modelo es aplicable y satisfacer esas suposiciones básicas. Para dar un ejemplo inapropiado, no nos importa el tres siete veintiuno, y usamos una línea recta para ajustar una curva, entonces, inevitablemente, no lograremos un buen resultado.

Validación cruzada (validación cruzada)

Validación cruzada de cinco veces

Utilice 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.

Selección de funciones integradas

En los métodos de selección de características de filtrado y envoltura, el proceso de selección de características es obviamente diferente del proceso de formación del alumno. La selección de funciones integradas realiza automáticamente la selección de funciones durante la formación del alumno. Las opciones integradas más utilizadas son la regularización L1 y la regularización L2. Después de agregar dos métodos de regularización al modelo de regresión lineal, se convirtieron en regresión de cresta y regresión de Lasso, respectivamente.

#引入子包
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

Ajuste del modelo

  • cómo estás
  • Ajuste de cuadrícula
  • Afinación Bayesiana

Supongo que te gusta

Origin blog.csdn.net/qq_45175218/article/details/105255693
Recomendado
Clasificación