私の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はあなたのフォローとスターを歓迎します!