SSH Connect GitHub y Configurar la tecla SSH

2022-12-26   EN  

Los santos han dicho que los datos y las características determinan el límite superior del aprendizaje automático, y los modelos y los algoritmos se acercan a este límite superior.

No importa cuán bueno sea el modelo, si no hay buenos datos y características, el efecto de entrenamiento no mejorará. La calidad de los datos es crucial para el análisis de datos, y a veces su importancia será mejor que el algoritmo modelo hasta cierto punto.

En primer lugar, deberíamos saber: ¿Por qué faltan los datos? ** La falta de datos es lo que no podemos evitar. Hay muchas razones posibles. Los bloggers resumen las siguientes tres categorías:

  • : se omite la información. Por ejemplo, debido a la negligencia del personal y el olvido; o la falta de fallas como los recolectores de datos, como cuando los requisitos de tiempo real del sistema son altos, la máquina es demasiado tarde para juzgar y decidir;

  • interesante: Algunos conjuntos de datos estipularán que el valor faltante también es un valor característico en la descripción de la función. En este momento, la pérdida de valor puede considerarse como un valor de característica especial;

  • Sin existencia: Algunos atributos característicos simplemente no existen en absoluto. Por ejemplo, el nombre de un cónyuge de una persona soltera no se puede completar, y el estado de ingresos de un niño no puede ser completado;

En resumen, necesitamos aclarar la causa de los valores faltantes:es causado por negligencia o inadvertida o no intencional, o es causada por intencional, o no existe en absoluto

veintitrés# . Solo sabiendo su fuente podemos tomar el medicamento correcto y hacerlo en consecuencia.

Antes de procesar los datos faltantes, es necesario comprender el mecanismo y la forma de la falta de datos. Llamar al conjunto de datos no contiene una variable de valor delatcompletamente variable, el conjunto de datos contiene una variable de valor deleat llamadavariable incompleta. Por la falta de distribución, los faltantes se pueden dividir enfalta completamente al azarfaltante aleatorioyfalta de aleación en absoluto

  • falta completamente al azar(Falta completamente al azar, MCAR): significa que la falta de datos es completamente aleatoria, no depende de ninguna variable incompleta o variable completa, y no afecta la imparcialidad de la muestra, como la falta de dirección familiar;

  • faltante al azar(Falta al azar, MAR): la falta de datos no es completamente aleatoria, es decir, la falta de este tipo de datos depende de otras variables completas, como la falta de datos financieros está relacionada con el tamaño de la empresa ;

  • faltante no candidato(falta al azar, MNAR): se refiere a la falta de datos relacionados con el valor de las variables incompletas en sí, como las personas de altos ingresos para proporcionar ingresos familiares;

Para la defleración aleatoria y no aleatoria, no es apropiado eliminar el registro directamente, porque se ha dado anteriormente. La deficiencia aleatoria puede estimar los valores faltantes por variables conocidas, en lugar de la no candidato que no falte al azar. No hay buena solución.

Eliminar directamente los registros que faltan y se pierden. Este método de procesamiento es simple y grosero, adecuado para un gran volumen de datos (más registros) y falta más pequeños, y después de eliminar, tiene poco impacto en la general. Generalmente no se recomienda, porque es probable que cause pérdida de datos y compensación de datos.

func: df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

# 1. Elimine la columna 'Age'
df.drop('age', axis=1, inplace=True)

# 2. Elimine la línea con valor vacío en la tabla de datos
df.dropna()

# 3, deseche algunas filas que se pierden en algunas columnas
df.dropna(axis=0, subset=['a','b'], inplace=True)

Eliminar directamente las variables faltantes. Según el primer paso, ya conocemos las deficiencias de cada variable. Si la relación deficiencia de una variable es demasiado alta, básicamente perderá la importancia predictiva. Podemos intentar eliminarla directamente.

# variables que son superiores al 80%de la relación faltante de más del 80%
data=data.dropna(thresh=len(data)*0.2, axis=1)

Antes de la falta de relleno de valor, primero debemos comprender la falta de variables, es decir, el significado de la variable, el método de adquisición y la lógica de cálculo, para saber por qué falta la variable y la falta valor medios. Por ejemplo, la falta de edad de “edad”, edad per cápita y falta de falta debería ser una deficiencia aleatoria. El número de préstamos de préstamo “loannum” puede representar ningún préstamo, lo cual es una falta de significado. Llenado constante global: 0, valor promedio, mediana, número, etc. se puede usar. El valor promedio es aplicable a los datos de distribución aproximadamente normales, y el valor de observación se distribuye uniformemente alrededor de la media; el número medio es adecuado para la distribución parcial o hay datos de puntos de grupo. Variables de categoría, sin tamaño y secuencia.

# significa relleno
data['col'] = data['col'].fillna(data['col'].means())
# relleno de número medio
data['col'] = data['col'].fillna(data['col'].median())
# 4 4 4 4
data['col'] = data['col'].fillna(stats.mode(data['col'])[0][0])

también puede usar el procesamiento de la clase del imputor:

from sklearn.preprocessing import Imputer
imr = Imputer(missing_values='NaN', strategy='mean', axis=0)
imputed_data =pd.DataFrame(imr.fit_transform(df.values),columns=df.columns)
imputed_data

Use un cierto modo de inserción para llenarlo.

# # Interpolated () Método de interpolación, el valor promedio del valor antes y después del valor faltante, pero si hay una falta de valores faltantes, la interpolación no se realiza.
df['c'] = df['c'].interpolate()

# Use el reemplazo de valor anterior. Cuando falta la primera línea, no vale la pena usarlo al banco.
df.fillna(method='pad')

# Use el reemplazo de valor posterior. Cuando falta la última línea, el banco usa hacia atrás para reemplazar sin valor. Todavía falta.
df.fillna(method='backfill')# reemplazarlo con los valores detrás

Los siguientes dos métodos deben procesar los datos primero

# Debe completar primero la interpolación de los datos de la columna y seguir el seguimiento como datos de capacitación
df['a'] = df['a'].interpolate()

# 5 5 5 y datos no aéreos
df_notnull = df[df.is_fill==0] # datos no vacíos
df_null = df[df.is_fill==1] # 6 6
x_train = df_notnull[['b', 'a']] # Datos de entrenamiento X, A, B Colaboración
y_train = df_notnull['c'] # Datos de entrenamiento Y, columna C (objetivo)
test = df_null[['b', 'a']] # Datos de pronóstico X, A, B Colaboración

El uso del llenado del algoritmo KNN es en realidad la columna objetivo como el escalar objetivo, que utiliza datos no emisores para adaptarse al algoritmo KNN, y finalmente predice la falta de columnas objetivo. (Para las características continuas, generalmente son promedio ponderado, y las características discretas generalmente son votos ponderados)
clase Sklearn

from sklearn.neighbors import KNeighborsClassifier, KNeighborsRegressor
def knn_filled_func(x_train, y_train, test, k = 3, dispersed = True):
    # params: x_train es la columna de destino que no contiene datos que no pierden valores (excluyendo la columna de destino)
    # params: y_train es una columna de destino sin valores faltantes
    # params: prueba es la lista de destino como datos faltantes (excluyendo la columna de destino)
    if dispersed:
        knn= KNeighborsClassifier(n_neighbors = k, weights = "distance")
    else:
        knn= KNeighborsRegressor(n_neighbors = k, weights = "distance")

    knn.fit(x_train, y_train.astype('int'))
    return test.index, knn.predict(test)

index,predict = knn_filled_func(x_train, y_train, test, 3, True)

La idea de llenar el algoritmo de bosque aleatorio es similar a la de KNN, es decir, el modelo de ajuste de datos existente se utiliza para predecir la falta de variables.

from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier

def RandomForest_filled_func(x_train, y_train, test, dispersed = True):
    # params: x_train es la columna de destino que no contiene datos que no pierden valores (excluyendo la columna de destino)
    # params: y_train es una lista de objetivos sin valores faltantes
    # params: prueba es la lista de destino como datos faltantes (excluyendo la columna de destino)
    if dispersed:
        rf= RandomForestRegressor()
    else:
        rf= RandomForestClassifier()

    rf.fit(x_train, y_train.astype('int'))
    return test.index, rf.predict(test)

index,predict = RandomForest_filled_func(x_train, y_train, test, True)

operación predictiva después de la finalización

# Valor de predicción de llenado
df_null['c'] = predict
# Volver a los datos originales
df['c'] = df['c'].fillna(df_null[['c']].c)
df.info()

rojo está llenando datos, Green son los datos originales
La imagen de arriba muestra un relleno de bosque aleatorio
La siguiente figura muestra el relleno de interpolación
在这里插入图片描述

source

Related Posts

Clase -02 – Análisis de métodos de uso común de matrices

conceptos básicos de aprendizaje automático

Auditoría de código SPEL de código Java-SEC-SEC

mysql workbench -er diagrama genera el indicador de base de datos de archivo SQL

SSH Connect GitHub y Configurar la tecla SSH

Random Posts

AppWidget Muestra la posición actual

NS3 NODO Protocolo de enrutamiento predeterminado

Tiempo Serialización-SpledateFormat

LEETCODE 57. Intervalo de inserción (2022.02.26) Chaoyue

red neuronal de confrontación