Starfruit Python Machine Learning Visualização de 5 dados 1: Gráfico de dispersão

Minha coluna do blog da CSDN: https://blog.csdn.net/yty_7

Endereço do Github: https://github.com/yot777/

 

Visualize dados usando o Matplotlib

O Matplotlib pode criar muitos gráficos visuais, possui um ambiente rico de ferramentas Python, vá para o seguinte tutorial para aprender:

https://blog.csdn.net/zw0Pi8G5C1x/article/details/79186024

Se você não planeja estudar em profundidade, pode usar o diagrama a seguir para entender brevemente alguns termos importantes do Matplotlib:

Combinado com o conteúdo da seção anterior, demonstre como usar o Matplotlib para visualizar dados no Python.

Etapa 1: queremos apresentar a biblioteca Matplotlib, use a seguinte declaração de importação e, em seguida, use a abreviação da biblioteca Matplotlib como plt .

import matplotlib.pyplot as plt

Se você for solicitado que o módulo matplotlib não está instalado, use o comando pip do Python para instalá-lo.

Etapa 2: Temos que decidir qual desenho desenhar, porque os dados usados ​​na seção anterior são:

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

As duas primeiras colunas são recursos e a última coluna é um rótulo, com um total de 10 partes de dados; portanto, desenhamos um gráfico de dispersão e rótulos diferentes mostram cores diferentes .

scatter () é uma função da biblioteca Matplotlib para desenhar um gráfico de dispersão.O protótipo é o seguinte:

matplotlib.pyplot.scatter (x, y, s = nenhum, c = nenhum, marcador = nenhum, cmap = nenhum, norma = nenhum, vmin = nenhum, vmax = nenhum, alfa = nenhum, alfa = nenhum, largura de linha = nenhum, verts = nenhum, edgecolors = None, *, data = None, ** kwargs)

Por enquanto, usaremos apenas a forma mais simples da função scatter (): scatter (x, y)

Os parâmetros (x, y) representam a coordenada do eixo xe a coordenada do eixo y do ponto de dados a ser desenhado.

Preste atenção especial a x, y são tuplas de comprimento n , os exemplos são os seguintes:

import matplotlib.pyplot as plt

#画出3个散点,坐标分别是(1,1)、(2,4)、(3,9)
plt.scatter((1,2,3), (1,4,9))
plt.show()

Os resultados são mostrados na figura:

Para uma explicação detalhada da função scatter (), siga em frente:

https://blog.csdn.net/m0_37393514/article/details/81298503

Etapa 3: classifique os dados originais de acordo com rótulos diferentes, ou seja, coloque o grupo com o rótulo 0 em um grupo e coloque o grupo com o rótulo 1 em um grupo

Etapa 4: importe o conjunto de dados rotulado 0 para as coordenadas do eixo xe do eixo y usando a função scatter ().

Etapa 5: importe o conjunto de dados rotulado 1 para as coordenadas do eixo xe do eixo y usando a função scatter ().

Etapa 6: Exiba o gráfico de dispersão desenhado.

O código é o seguinte, observe que há uma pequena diferença em relação ao código anterior:

O código na seção anterior:

        #特征矩阵featureMat实际上是二维列表,注意添加元素的方法和一维列表稍有不同
        featureMat.append([lineArr[0], lineArr[1]])
        #向标签向量labelMat添加元素,即lineArr当前行的最后1个元素
        labelMat.append(lineArr[-1])

Código nesta seção:

        #特征矩阵featureMat实际上是二维列表,注意添加元素的方法和一维列表稍有不同
        featureMat.append([float(lineArr[0]), float(lineArr[1])])
        #向标签向量labelMat添加元素,即lineArr当前行的最后1个元素
        labelMat.append(float(lineArr[-1]))

Nota: Cada elemento da matriz de recursos featureMat e label vector labelMat é forçado a ser convertido para o tipo numérico de ponto flutuante flutuante, para facilitar a função scatter () para identificar as coordenadas do eixo x e do eixo y, porque as coordenadas só podem ser números. Personagem.

O código completo é o seguinte:

import matplotlib.pyplot as plt
import numpy as np

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([float(lineArr[0]), float(lineArr[1])])
        #向标签向量labelMat添加元素,即lineArr当前行的最后1个元素
        labelMat.append(float(lineArr[-1]))
        #当前行的元素已添加到特征矩阵featureMat和标签向量labelMat,进入下一行继续
    #所有行都读取完毕后关闭文件
    fr.close()
    #整个loadDataSet()函数返回特征矩阵featureMat和标签向量labelMat
    return featureMat, labelMat

def showDataSet(featureMat, labelMat):
    #创建标签为1的样本列表
    data_one = []
    #创建标签为0的样本列表
    data_zero = []
    #遍历特征矩阵featureMat,i是特征矩阵featureMat的当前行
    #特征矩阵featureMat的两个特征列,正好是散点图的数据点的x轴坐标和y轴坐标
    for i in range(len(featureMat)):
        #如果特征矩阵featureMat的当前行号i对应的标签列表labelMat[i]的值为1
        if labelMat[i] == 1:
            #将当前特征矩阵featureMat[i]行添入data_one列表
            data_one.append(featureMat[i])
        #如果特征矩阵featureMat的当前行号i对应的标签列表labelMat[i]的值为0
        elif labelMat[i] == 0:
            #将当前特征矩阵featureMat[i]行添入data_zero列表
            data_zero.append(featureMat[i])
    #将做好的data_one列表转换为numpy数组data_one_np
    data_one_np = np.array(data_one)
    #将做好的data_zero列表转换为numpy数组data_zero_np
    data_zero_np = np.array(data_zero)
    #根据标签为1的样本的x坐标(即data_one_np的第0列)和y坐标(即data_one_np的第1列)来绘制散点图
    plt.scatter(data_one_np[:,0], data_one_np[:,1])
    #根据标签为0的样本的x坐标(即data_zero_np的第0列)和y坐标(即data_zero_np的第1列)来绘制散点图
    plt.scatter(data_zero_np[:,0], data_zero_np[:,1])
    #显示画好的散点图
    plt.show()


if __name__ == '__main__':
    #调用loadDataSet()函数
    X, y = loadDataSet('test.txt')
    #调用showDataSet()函数
    showDataSet(X, y)

Os resultados são mostrados na figura:

Podemos ver intuitivamente a partir do gráfico de dispersão:

Os pontos azuis (rotulados 1) parecem estar concentrados na parte inferior esquerda da figura e os pontos laranja (rotulados 0) parecem estar concentrados na parte superior direita da figura

Vamos adicionar mais dois pontos A e B ao gráfico de dispersão.Pense nos rótulos deles? Esse é o problema que o KNN, o primeiro algoritmo para aprendizado de máquina, está prestes a resolver.

Sumário

O Matplotlib pode criar muitos gráficos visuais, desenhando etapas:

Etapa 1: Importe a biblioteca Matplotlib e use import matplotlib.pyplot como plt

Etapa 2: Decida qual gráfico desenhar, esta seção é um gráfico de dispersão

Por enquanto, apenas a forma mais simples da função scatter () é usada para gráficos de dispersão: scatter (x, y)

Os parâmetros (x, y) representam a coordenada do eixo xe a coordenada do eixo y do ponto de dados a ser desenhado.

Preste atenção especial a x, y são tuplas de comprimento n

Etapa 3: classifique os dados originais de acordo com rótulos diferentes, ou seja, coloque o grupo com o rótulo 0 em um grupo e coloque o grupo com o rótulo 1 em um grupo

Etapa 4: importe o conjunto de dados rotulado 0 para as coordenadas do eixo xe do eixo y usando a função scatter ().

Etapa 5: importe o conjunto de dados rotulado 1 para as coordenadas do eixo xe do eixo y usando a função scatter ().

Etapa 6: Exiba o gráfico de dispersão desenhado.

Nota: Cada elemento da matriz de recurso featureMat e do vetor de rótulo labelMat deve ser forçado a se transformar em um tipo numérico de ponto flutuante.

 

 

Minha coluna do blog da CSDN: https://blog.csdn.net/yty_7

Endereço do Github: https://github.com/yot777/

Se você acha que este capítulo é útil para você, seja bem-vindo a seguir, comentar e curtir! O Github recebe seu Follow e Star!

Publicado 55 artigos originais · ganhou elogios 16 · vista 6111

Acho que você gosta

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