Cómo construir un modelo predictivo en 10 minutos usando Python
Siempre me concentro en invertir tiempo de calidad en las etapas iniciales del modelado, como generar hipótesis, generar ideas, discutir o comprender la variedad de resultados posibles. Todas estas actividades me ayudan a resolver problemas y, en última instancia, me permiten diseñar soluciones comerciales más sólidas. Tienes buenas razones para dedicar este tiempo al principio:
Tienes suficiente tiempo para invertir y te falta experiencia (esto influye)
No tienes otra perspectiva sobre los datos o ideas sesgadas (siempre recomiendo, generación de hipótesis antes de sumergirse en los datos)
En las etapas posteriores, tendrás prisa por completar el proyecto y ya no podrás invertir tiempo de calidad.
Esta fase requiere una inversión de tiempo de calidad, por lo que no he mencionado un cronograma, pero te recomiendo que lo conviertas en una práctica estándar. Esto le ayudará a crear mejores modelos predictivos, lo que dará como resultado un trabajo menos iterativo en el futuro. Veamos el cronograma de las etapas restantes de la construcción del primer modelo:
Análisis descriptivo de datos: 50 % del tiempo
Preprocesamiento de datos (valores faltantes y reparación de valores atípicos): 40% del tiempo
Modelado de datos - 4% del tiempo
Predicción de rendimiento - 6% del tiempo
Revisemos cada proceso paso a paso ( invertir tiempo de predicción en cada paso):
Fase 1: Análisis descriptivo/Exploración de datos
Cuando comencé a convertirme en científico de datos, la exploración de datos ocupaba mucho de mi tiempo. Sin embargo, con el tiempo, he automatizado muchas de mis operaciones de datos. Dado que la preparación de datos representa el 50 % del esfuerzo necesario para crear su primer modelo, los beneficios de la automatización son claros.
Este es nuestro primer modelo básico y hemos eliminado cualquier diseño funcional. Por lo tanto, el tiempo necesario para el análisis descriptivo se limita a comprender los valores faltantes y las características grandes directamente visibles. En mi metodología, necesitarías 2 minutos para completar este paso (suponiendo un conjunto de datos de 100.000 observaciones).
Qué hizo mi primer modelo:
Determinar ID, características de entrada y características de destino
Determinar características categóricas y características numéricas
Determinar la columna donde se encuentra el valor faltante
Segunda etapa: preprocesamiento de datos (procesamiento de valor faltante)
Hay muchas formas de resolver este problema. Para nuestro primer modelo, nos centraremos en técnicas inteligentes y rápidas para construir el primer modelo funcional.
Crear marcadores falsos para los valores faltantes: Esto es útil, a veces los propios valores faltantes contienen mucha información.
Utilice la media, la mediana u otros métodos simples para completar los valores faltantes: tanto el llenado de la media como el de la mediana tienen buenos resultados, la mayoría de la gente prefiere usar el llenado de la media, pero en el caso de una distribución sesgada, recomiendo usar la mediana . Otros métodos inteligentes son similares al llenado medio y mediano, utilizando otras características relevantes para el llenado o modelado. Por ejemplo, en Titanic Survival Challenge, puede completar los valores faltantes para la edad utilizando títulos de pasajeros como "Señor", "Señorita", "Señora", "Capitán" y "El capitán tiene un rendimiento". muy buen impacto.
Imputar variables categóricas faltantes: cree una nueva clase para imputar variables categóricas, codificando todos los valores faltantes como un solo valor, como "New_Cat", o puede mirar combinaciones de frecuencia, usando alta definición. variables categóricas de frecuencia para completar los valores faltantes.
Debido a que el método de procesamiento de datos es muy simple, solo toma de 3 a 4 minutos completar el procesamiento de datos.
Fase 3: Modelado de Datos
Dependiendo del problema de negocio, recomiendo utilizar tecnología GBM o RandomForest. Ambas técnicas son muy efectivas para crear soluciones de referencia. Veo que los científicos de datos suelen utilizar estos dos métodos como primer y último modelo. Esto puede tardar de 4 a 5 minutos.
Fase 4: Predicción del rendimiento
Hay muchas formas de verificar el rendimiento del modelo. Recomiendo dividir el conjunto de datos de entrenamiento en un conjunto de entrenamiento y un conjunto de validación (idealmente 70:30). ), y modelado en el 70% del conjunto de datos de entrenamiento. Ahora, realice una validación cruzada utilizando el 30 % del conjunto de datos de validación y evalúe el rendimiento utilizando las métricas de evaluación.
Finalmente, tómate de 1 a 2 minutos para realizarlo y registrar los resultados.
El propósito de este artículo no es ganar la competencia, sino establecer nuestro propio punto de referencia. Construyamos su primer modelo de alto impacto realizando los pasos anteriores en código Python.
Comencemos
Primero, supongo que ha realizado toda la generación de hipótesis y que es bueno realizando operaciones básicas de ciencia de datos en Python. Ilustraré esto con un ejemplo de un desafío de ciencia de datos. Echemos un vistazo a su estructura:
Paso 1: importe las bibliotecas necesarias y lea los conjuntos de datos de prueba y entrenamiento.
#Importar pandas, paquetes numpy, importar LabelEncoder, funciones aleatorias, RandomForestClassifier, GradientBoostingClassifier
importar pandas como pd
importar numpy como np
fromsklearn.preprocessing importar LabelEncoder
importar aleatorio
fromsklearn.ensemble importar RandomForestClassifier
desde sklearn.ensemble importar GradientBoostingClassifier
#Read entrenamiento, conjunto de datos de prueba
train=pd.concat(,axis=0) #Conjunto conjunto de datos de entrenamiento y prueba
Paso 2: no es necesario completar el segundo paso del marco en Python. Continúe con el siguiente paso.
Paso 3: Ver los nombres de las columnas o el resumen del conjunto de datos
fullData.columns #Mostrar todos los nombres de las columnas
fullData.head(10) #Mostrar data Los primeros 10 registros del marco
fullData.describe() #Puedes usar la función describe() para ver el resumen del campo numérico
Paso 4: Determinar a) Variable ID b) Variable objetivo c) Variables categóricas d) Variables numéricas e) Otras variables.
ID_col =
target_col =
cat_cols =
num_cols= lista(set(lista(fullData.column))-set( cat_cols)-set(ID_col)-set( target_col)-set(data_col))
other_col= #Establecer los identificadores de los conjuntos de datos de entrenamiento y prueba
Paso 5: identificar los faltantes valores Variables y crear indicadores
fullData.isnull().any()#Returns True o False, True significa que faltan valores, False significa lo contrario
num_cat_cols = num_cols+cat_cols # Combinar valores Variables y variables categóricas
#Crear una nueva variable para variables con valores faltantes
#Los valores faltantes se marcan como 1, de lo contrario se marcan como 0
para var en num_ cat_cols:
si fullData.isnull().any() = Verdadero:
fullData=fullData.isnull()*1
Paso 6: Complete los valores faltantes
# Complete los valores numéricos faltantes con el valor medio
fullData = fullData.fillna(fullData.mean(),place=True )
#Use - 9999 completa los valores faltantes para variables categóricas
fullData = fullData.fillna(value = -9999)
Paso 7: Crear etiquetas codificadores para variables categóricas y dividir el conjunto de datos en un conjunto de entrenamiento y un conjunto de prueba, y dividir aún más el conjunto de datos de entrenamiento en un conjunto de entrenamiento y un conjunto de prueba. asype('str'))
train=fullData='Train']
test=fullData='Test']
train = np.random. uniform(0, 1, len(train)) <= .75
Entrenar, Validar = entrenar=True], entrenar=False]
Paso 8: Cambiar relleno y falso ( Las variables del indicador de valor faltante) se pasan al modelo y uso un bosque aleatorio para predecir las categorías.
features=list(set(list(fullData.columns))-set(ID_col)-set(target_col)-set(other_col))
x_train = Train.values p>
p>
y_ train = Train.values
x_validate = Validar.valores
y_validate = Validar.valores
x_test = prueba .values
random.seed( 100)
rf = RandomForestClassifier(n_estimators=1000)
rf.fit(x_train, y_train)
Paso 9: Verificar el rendimiento de la predicción
status = rf.predict_ proba(x_validate)
fpr, tpr, _ = roc_curve(y_validate, status)
roc_auc = auc (fpr, tpr)
imprimir roc_auc
estado_final = rf .predict_proba(x_test)
test=estado_final
test.to_csv( 'C:/Users/Analytics Vidhya/Desktop/model_output.csv',columns=)
¡Ahora está listo para enviar!