Starfruit Python Machine Learning 4: creación y carga de archivos de conjuntos de datos

Mi columna del blog CSDN: https://blog.csdn.net/yty_7

Dirección de Github: https://github.com/yot777/

 

Archivo de conjunto de datos

En las primeras lecciones, usamos S = np.array () para ingresar manualmente el conjunto de datos.

Apenas es factible en el caso de una pequeña cantidad de datos, pero una vez que la cantidad de datos aumenta, es difícil ingresar manualmente de esta manera.

Podemos usar el método de Python para leer el archivo del conjunto de datos mencionado en la conferencia avanzada para cargar el conjunto de datos.

El conjunto de datos que utilizamos en la sección anterior es el siguiente:

Datos de muestra  Característica x1  Característica x2  Etiqueta
1 1 2 1
2 4 4 5 5 0 0
3 2 1 1
4 4 4 4 2 1
5 5 6 6 1 0 0
6 6 3 3 1
7 7 5 5 2 0 0
8 4 4 5 5 0 0
9 9 2 7 7 0 0
10 2 6 6 1

En términos generales, el archivo del conjunto de datos no necesita un título, y el número de serie de cada fila también es innecesario. Solo necesita incluir todas las columnas de características y columnas de etiquetas .

Entre varias características, las características y las columnas generalmente están separadas por la tecla Tab o el espacio o la coma.

Por lo tanto, podemos reescribir el conjunto de datos en el siguiente archivo de conjunto de datos test.txt :


1 2 1
4 5 0
2 1 1
4 2 1
6 1 0
3 3 1
5 2 0
4 5 0
2 7 0
2 6 1

 

Conjunto de datos de carga de archivos

Podemos crear una función loadDataSet () para cargar el archivo de conjunto de datos .

Esta función debe hacer lo siguiente:

(1) Abra el archivo del conjunto de datos (tenga en cuenta que el código Python y el archivo del conjunto de datos deben estar en el mismo directorio; de lo contrario, debe especificar la ruta completa del archivo del conjunto de datos)

(2) Recorre todas las líneas del archivo, i desde la primera línea hasta la última línea

(3) Elimine los caracteres de retorno de carro y avance de línea al final de cada línea del archivo de conjunto de datos

(4) Divida cada línea en varios elementos según el separador entre cada elemento de línea del archivo de conjunto de datos

(5) Agregue los elementos que no sean el último elemento de la fila i-ésima a la fila i-ésima de la matriz de características

(6) Agregue el último elemento de la fila i-ésima al elemento i-ésimo del vector etiqueta (también la fila i-ésima)

(7) Cerrar el archivo

El código es el siguiente:

def loadDataSet(fileName):
    #创建空特征矩阵
    featureMat = []
    #创建空标签向量
    labelMat = []
    #打开文件
    fr = open(fileName)
    #按行遍历读取文件
    for line in fr.readlines(): 
        #每一行先去掉回车换行符,再以Tab键为元素之间的分隔符号,把每一行分割成若干个元素
        lineArr = line.strip().split('\t')
        print("当前行是:", lineArr)
        #向特征矩阵featureMat添加元素,即lineArr当前行的第0个元素和第1个元素
        #特征矩阵featureMat实际上是二维列表,注意添加元素的方法和一维列表稍有不同
        featureMat.append([lineArr[0], lineArr[1]])
        print("当前的特征矩阵featureMat是:", featureMat)
        #向标签向量labelMat添加元素,即lineArr当前行的最后1个元素
        labelMat.append(lineArr[-1])
        print("当前的标签向量labelMat是:", labelMat)
        #当前行的元素已添加到特征矩阵featureMat和标签向量labelMat,进入下一行继续
    #所有行都读取完毕后关闭文件
    fr.close()
    #整个loadDataSet()函数返回特征矩阵featureMat和标签向量labelMat
    return featureMat, labelMat

if __name__ == '__main__':
    #调用loadDataSet()函数
    X, y = loadDataSet('test.txt')
    print("最终得到的特征矩阵X是:", X)
    print("最终得到的标签向量y是:", y)

Estudie detenidamente el código anterior. La función loadDataSet () implementa completamente los 7 pasos anteriores.

Para facilitar la comprensión de todos, se han agregado muchas funciones print () al código para generar los resultados de los pasos intermedios del programa. Estas print () son completamente innecesarias en la programación real.

Los resultados son los siguientes:

当前行是: ['1', '2', '1']
当前的特征矩阵featureMat是: [['1', '2']]
当前的标签向量labelMat是: ['1']
当前行是: ['4', '5', '0']
当前的特征矩阵featureMat是: [['1', '2'], ['4', '5']]
当前的标签向量labelMat是: ['1', '0']
当前行是: ['2', '1', '1']
当前的特征矩阵featureMat是: [['1', '2'], ['4', '5'], ['2', '1']]
当前的标签向量labelMat是: ['1', '0', '1']
当前行是: ['4', '2', '1']
当前的特征矩阵featureMat是: [['1', '2'], ['4', '5'], ['2', '1'], ['4', '2']]
当前的标签向量labelMat是: ['1', '0', '1', '1']
当前行是: ['6', '1', '0']
当前的特征矩阵featureMat是: [['1', '2'], ['4', '5'], ['2', '1'], ['4', '2'], ['6', '1']]
当前的标签向量labelMat是: ['1', '0', '1', '1', '0']
当前行是: ['3', '3', '1']
当前的特征矩阵featureMat是: [['1', '2'], ['4', '5'], ['2', '1'], ['4', '2'], ['6', '1'], ['3', '3']]
当前的标签向量labelMat是: ['1', '0', '1', '1', '0', '1']
当前行是: ['5', '2', '0']
当前的特征矩阵featureMat是: [['1', '2'], ['4', '5'], ['2', '1'], ['4', '2'], ['6', '1'], ['3', '3'], ['5', '2']]
当前的标签向量labelMat是: ['1', '0', '1', '1', '0', '1', '0']
当前行是: ['4', '5', '0']
当前的特征矩阵featureMat是: [['1', '2'], ['4', '5'], ['2', '1'], ['4', '2'], ['6', '1'], ['3', '3'], ['5', '2'], ['4', '5']]
当前的标签向量labelMat是: ['1', '0', '1', '1', '0', '1', '0', '0']
当前行是: ['2', '7', '0']
当前的特征矩阵featureMat是: [['1', '2'], ['4', '5'], ['2', '1'], ['4', '2'], ['6', '1'], ['3', '3'], ['5', '2'], ['4', '5'], ['2', '7']]
当前的标签向量labelMat是: ['1', '0', '1', '1', '0', '1', '0', '0', '0']
当前行是: ['2', '6', '1']
当前的特征矩阵featureMat是: [['1', '2'], ['4', '5'], ['2', '1'], ['4', '2'], ['6', '1'], ['3', '3'], ['5', '2'], ['4', '5'], ['2', '7'], ['2', '6']]
当前的标签向量labelMat是: ['1', '0', '1', '1', '0', '1', '0', '0', '0', '1']
最终得到的特征矩阵X是: [['1', '2'], ['4', '5'], ['2', '1'], ['4', '2'], ['6', '1'], ['3', '3'], ['5', '2'], ['4', '5'], ['2', '7'], ['2', '6']]
最终得到的标签向量y是: ['1', '0', '1', '1', '0', '1', '0', '0', '0', '1']

Arriba, hemos completado la producción y carga del archivo de conjunto de datos.

Entonces podemos usar el método en la sección anterior, es fácil de obtener:

Característica del conjunto de entrenamiento X_train , etiqueta del conjunto de entrenamiento y_train

En donde prueba establece X_test , la prueba ajustada de la etiqueta y_test

El código es el siguiente:

def loadDataSet(fileName):
    #创建空特征矩阵
    featureMat = []
    #创建空标签向量
    labelMat = []
    #打开文件
    fr = open(fileName)
    #按行遍历读取文件
    for line in fr.readlines(): 
        #每一行先去掉回车换行符,再以Tab键为元素之间的分隔符号,把每一行分割成若干个元素
        lineArr = line.strip().split('\t')
        #向特征矩阵featureMat添加元素,即lineArr当前行的第0个元素和第1个元素
        #特征矩阵featureMat实际上是二维列表,注意添加元素的方法和一维列表稍有不同
        featureMat.append([lineArr[0], lineArr[1]])
        #向标签向量labelMat添加元素,即lineArr当前行的最后1个元素
        labelMat.append(lineArr[-1])
        #当前行的元素已添加到特征矩阵featureMat和标签向量labelMat,进入下一行继续
    #所有行都读取完毕后关闭文件
    fr.close()
    #整个loadDataSet()函数返回特征矩阵featureMat和标签向量labelMat
    return featureMat, labelMat

if __name__ == '__main__':
    #调用loadDataSet()函数
    X, y = loadDataSet('test.txt')
    #数据集80%为训练集,20%为测试集
    X_train = X[:8]
    print('训练集特征矩阵X_train是:',X_train)
    y_train = y[:8]
    print('训练集标签y_train是:',y_train)
    X_test = X[8:]
    print('测试集特征X_test是:',X_test)
    y_test = y[8:]
    print('测试集标签y_test是:',y_test)

Los resultados son los siguientes:

训练集特征矩阵X_train是: [['1', '2'], ['4', '5'], ['2', '1'], ['4', '2'], ['6', '1'], ['3', '3'], ['5', '2'], ['4', '5']]
训练集标签y_train是: ['1', '0', '1', '1', '0', '1', '0', '0']
测试集特征X_test是: [['2', '7'], ['2', '6']]
测试集标签y_test是: ['0', '1']

Resumen

El archivo de conjunto de datos no necesita un título, y el número de serie de cada fila también es innecesario. Solo necesita incluir todas las columnas de características y columnas de etiquetas .

Entre varias características, las características y las columnas generalmente están separadas por la tecla Tab o el espacio o la coma.

Puede crear una función loadDataSet () para cargar el archivo de conjunto de datos . Esta función debe hacer lo siguiente:

(1) Abra el archivo del conjunto de datos (tenga en cuenta que el código Python y el archivo del conjunto de datos deben estar en el mismo directorio; de lo contrario, debe especificar la ruta completa del archivo del conjunto de datos)

(2) Recorre todas las líneas del archivo, i desde la primera línea hasta la última línea

(3) Elimine los caracteres de retorno de carro y avance de línea al final de cada línea del archivo de conjunto de datos

(4) Divida cada línea en varios elementos según el separador entre cada elemento de línea del archivo de conjunto de datos

(5) Agregue los elementos que no sean el último elemento de la fila i-ésima a la fila i-ésima de la matriz de características

(6) Agregue el último elemento de la fila i-ésima al elemento i-ésimo del vector etiqueta (también la fila i-ésima)

(7) Cerrar el archivo

 

Mi columna del blog CSDN: https://blog.csdn.net/yty_7

Dirección de Github: https://github.com/yot777/

Si crees que este capítulo es útil para ti, ¡bienvenido a seguir, comentar y dar me gusta! ¡Github le da la bienvenida a Follow and Star!

Publicado 55 artículos originales · alabanza ganado 16 · vistas 6111

Supongo que te gusta

Origin blog.csdn.net/yty_7/article/details/105162669
Recomendado
Clasificación