Starfruit Python Machine Learning 5-Data Visualization 1:散布図

私のCSDNブログの列:https://blog.csdn.net/yty_7

Githubアドレス:https://github.com/yot777/

 

Matplotlibを使用してデータを視覚化する

Matplotlibは多くの視覚的なチャートを作成でき、Pythonツールの豊富な環境があります。次のチュートリアルに移動して学習してください。

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

詳細に学習する予定がない場合は、次の図を使用して、Matplotlibのいくつかの重要な用語を簡単に理解できます。

前のセクションの内容と組み合わせて、Matplotlibを使用してPythonでデータを視覚化する方法を示します。

ステップ1:Matplotlibライブラリを紹介し、次のインポートステートメントを使用してから、 Matplotlibライブラリの省略形をpltとして使用します。

import matplotlib.pyplot as plt

matplotlibモジュールがインストールされていないというプロンプトが表示されたら、Pythonのpipコマンドを使用してインストールします。

ステップ2:前のセクションで使用したデータは次のとおりであるため、描画する図面を決定する必要があります。

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

最初の2列は、最後の列はラベル、データの10枚の合計であり、我々はドロースキャッタグラムを、そして異なるラベルが表示される別の色を

scatter()は、散布図を描画するためのMatplotlibライブラリの関数です。プロトタイプは次のとおりです。

matplotlib.pyplot.scatter(x、y、s = None、c = None、marker = None、cmap = None、norm = None、vmin = None、vmax = None、alpha = None、linewidths = None、verts = None、 edgecolors = None、*、data = None、** kwargs)

とりあえず、最も単純な形式のscatter()関数のみを使用します:scatter(x、y)

パラメータ(x、y)は、描画されるデータポイントのx軸座標とy軸座標を表します。

xに特に注意してください。yは長さnのタプルです。例は次のとおりです。

import matplotlib.pyplot as plt

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

結果を図に示します。

scatter()関数の詳細については、先に進んでください。

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

手順3:元のデータをさまざまなラベルに従って並べ替えます。つまり、ラベル0のグループをグループに入れ、ラベル1のグループをグループに入れます。

ステップ4:scatter()関数を使用して、0というラベルの付いたデータのセットをx軸座標とy軸座標にインポートします。

ステップ5:scatter()関数を使用して、1というラベルの付いたデータのセットをx軸座標とy軸座標にインポートします。

ステップ6:描画された散布図を表示します。

コードは次のとおりです。前のコードとはわずかに異なることに注意してください。

前のセクションのコード:

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

このセクションのコード:

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

注:フィーチャマトリックスfeatureMatとラベルベクトルlabelMatの各要素は、浮動小数点数値型に強制的に変換されます。これは、分散()関数がx軸座標とy軸座標を識別できるようにするためです。キャラクター。

完全なコードは次のとおりです。

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)

結果を図に示します。

散布図から直観的に確認できます。

青いドット(1のラベル)は図の左下に集中しているように見え、オレンジのドット(0のラベル)図の右上に集中しているようです。

散布図にさらに2つの点AとBを追加して、それらのラベルがどうあるべきかを考えます。これは、機械学習の最初のアルゴリズムであるKNNが解決しようとしている問題です。

まとめ

Matplotlibは、多くの視覚的なチャート、描画手順を作成できます。

手順1:Matplotlibライブラリをインポートし、pltとしてimport matplotlib.pyplotを使用する

ステップ2:描画するグラフを決定します。このセクションは散布図です

とりあえず、散布図では最も単純な形式のscatter()関数のみが使用されます:scatter(x、y)

パラメータ(x、y)は、描画されるデータポイントのx軸座標とy軸座標を表します。

xに特に注意してください。yは長さnのタプルです。

手順3:元のデータをさまざまなラベルに従って並べ替えます。つまり、ラベル0のグループをグループに入れ、ラベル1のグループをグループに入れます。

ステップ4:scatter()関数を使用して、0というラベルの付いたデータのセットをx軸座標とy軸座標にインポートします。

ステップ5:scatter()関数を使用して、1というラベルの付いたデータのセットをx軸座標とy軸座標にインポートします。

ステップ6:描画された散布図を表示します。

注:特徴行列featureMatおよびラベルベクトルlabelMatの各要素は、強制的に浮動小数点数値型に変換する必要があります。

 

 

私のCSDNブログの列:https://blog.csdn.net/yty_7

Githubアドレス:https://github.com/yot777/

この章があなたに役立つと思うなら、フォローして、コメントして、いいね!Githubはあなたのフォローとスターを歓迎します!

公開された55元の記事 ウォン称賛16 ビュー6111

おすすめ

転載: blog.csdn.net/yty_7/article/details/105164521