【python資料探勘課程】二十五.Matplotlib繪製帶主題及聚類類標的散點圖
這是《Python資料探勘課程》系列文章,希望對您有所 幫助。當我們做聚類分析繪製散點圖時,通常會遇到無法區分散點類標的情況,做主題分析時,可能會遇到無法將對應散點的名稱(尤其中文名稱)新增至圖型中,為了解決這兩個問題,本文提出了Matplotlib庫的高階應用,主要是繪製帶主題的散點圖及聚類類標顏色進行區分,該方法被廣泛應用於文字聚類和主題分析領域。
本篇文章為基礎性文章,希望對你有所幫助,提供些思路,也是自己教學的內容。如果文章中存在錯誤或不足之處,還請海涵。同時,推薦大家閱讀我以前的文章瞭解其他知識。
前文參考:
【Python資料探勘課程】一.安裝Python及爬蟲入門介紹
【Python資料探勘課程】二.Kmeans聚類資料分析及Anaconda介紹
【Python資料探勘課程】三.Kmeans聚類程式碼實現、作業及優化
【Python資料探勘課程】四.決策樹DTC資料分析及鳶尾資料集分析
【Python資料探勘課程】五.線性迴歸知識及預測糖尿病例項
【Python資料探勘課程】六.Numpy、Pandas和Matplotlib包基礎知識
【Python資料探勘課程】七.PCA降維操作及subplot子圖繪製
【Python資料探勘課程】八.關聯規則挖掘及Apriori實現購物推薦
【Python資料探勘課程】九.迴歸模型LinearRegression簡單分析氧化物資料
【python資料探勘課程】十.Pandas、Matplotlib、PCA繪圖實用程式碼補充
【python資料探勘課程】十一.Pandas、Matplotlib結合SQL語句視覺化分析
【python資料探勘課程】十二.Pandas、Matplotlib結合SQL語句對比圖分析
【python資料探勘課程】十三.WordCloud詞雲配置過程及詞頻分析
【python資料探勘課程】十四.Scipy呼叫curve_fit實現曲線擬合
【python資料探勘課程】十五.Matplotlib呼叫imshow()函式繪製熱圖
【python資料探勘課程】十六.邏輯迴歸LogisticRegression分析鳶尾花資料
【python資料探勘課程】十七.社交網路Networkx庫分析人物關係(初識篇)
【python資料探勘課程】十八.線性迴歸及多項式迴歸分析四個案例分享
【python資料探勘課程】十九.鳶尾花資料集視覺化、線性迴歸、決策樹花樣分析
【python資料探勘課程】二十.KNN最近鄰分類演算法分析詳解及平衡秤TXT資料集讀取
【python資料探勘課程】二十一.樸素貝葉斯分類器詳解及中文文字輿情分析
【python資料探勘課程】二十二.Basemap地圖包安裝入門及基礎知識講解
【python資料探勘課程】二十三.時間序列金融資料預測及Pandas庫詳解
【python資料探勘課程】二十四.KMeans文字聚類分析互動百科語料
PSS:最近參加CSDN2018年部落格評選,希望您能投出寶貴的一票。我是59號,Eastmount,楊秀璋。投票地址:https://bss.csdn.net/m/topic/blog_star2018/index
五年來寫了314篇部落格,12個專欄,是真的熱愛分享,熱愛CSDN這個平臺,也想幫助更多的人,專欄包括Python、資料探勘、網路爬蟲、影象處理、C#、Android等。現在也當了兩年老師,更是覺得有義務教好每一個學生,讓貴州學子好好寫點程式碼,學點技術,"師者,傳到授業解惑也",提前祝大家新年快樂。2019我們攜手共進,為愛而生。
一. Matplotlib繪製帶主題散點圖
本文能幫助大家實現如下圖所示的文字聚類分析或LDA主題模型分析,將相同主題的文章聚集在一起,也可以用於引文分析。圖中包括人物、動物、景區和國家四個主題,將相似主題的文字聚集在一起,但也有預測錯誤的點,比如黃色“侯佩岑”被預測為黃色的景區主題。
文字聚類詳見上一篇文章:【python資料探勘課程】二十四.KMeans文字聚類分析互動百科語料。
詳細程式碼如下所示,通過(x,y)繪製散點圖,再呼叫annotate()函式增加每個點對應的名稱。注意:聚類分析通過scatter()繪製圖形,通常包括:x座標、y座標、點名稱、聚類類標。
#-*- coding:utf-8 -*-
import os
import codecs
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
x = [2.3, 4.5, 3, 7, 6.5, 4, 5.3]
y = [5, 4, 7, 5, 5.3, 5.5, 6.2]
num = np.arange(7)
name = ["a", "b", "c", "d", "e", "f", "g"]
fig, ax = plt.subplots()
ax.scatter(x,y,c='r',s=100)
for i,txt in enumerate(name): #n
ax.annotate(txt,(x[i],y[i]))
plt.show()
輸出結果如下所示:
這裡是通過 "name = ["a", "b", "c", "d", "e", "f", "g"]" 或 "num = np.arange(7)" 陣列設定名稱,而實際情況資料很多,比如文字聚類,我們可以通過TXT文字或CSV檔案讀入資料進行繪製,尤其是中文名稱。詳細程式碼如下所示:
#-*- coding:utf-8 -*-
import os
import codecs
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
x = [2.3, 4.5, 3, 7, 6.5, 4, 5.3]
y = [5, 4, 7, 5, 5.3, 5.5, 6.2]
n=np.arange(7)
name = ["a", "b", "c", "d", "e", "f", "g"]
fig, ax = plt.subplots()
ax.scatter(x,y,c='r',s=100)
#定義陣列讀取名稱
corpus = []
result = codecs.open('allname.txt', 'r', 'utf-8')
for u in result.readlines():
print u.strip()
corpus.append(u.strip())
#解決中文和負號'-'顯示為方塊的問題
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family']='sans-serif'
matplotlib.rcParams['axes.unicode_minus'] = False
for i,txt in enumerate(corpus): #n name
ax.annotate(txt,(x[i],y[i]))
result.close()
plt.savefig('plot.png', dpi=1200)
plt.show()
輸出結果如下所示:
二. Matplotlib聚類類標設定散點圖
假設現在對鳶尾花資料集進行KMeans聚類分析,程式碼如下所示:
# -*- coding: utf-8 -*-
#載入資料集
from sklearn.datasets import load_iris
iris = load_iris()
print iris.data #輸出資料集
print iris.target #輸出真實標籤
print len(iris.target)
print iris.data.shape #150個樣本 每個樣本4個特徵
#匯入決策樹DTC包
from sklearn.cluster import KMeans
clf = KMeans(n_clusters=3)
pre = clf.fit_predict(iris.data)
print pre
#獲取花卉兩列資料集
X = iris.data
L1 = [x[0] for x in X]
print L1
L2 = [x[1] for x in X]
print L2
#繪圖
import numpy as np
import matplotlib.pyplot as plt
plt.scatter(L1, L2, c=pre, marker='x', s=100)
plt.title("KMeans")
plt.show()
輸出圖形如下所示:
上圖卻不知道每種顏色的散點對應的類標或名稱。這是聚類分析常見的一個問題,如何解決這個問題呢?需要通過迴圈獲取不同類標,再繪製散點圖並增加圖例。完整程式碼如下所示:
# -*- coding: utf-8 -*-
#載入資料集
from sklearn.datasets import load_iris
iris = load_iris()
print iris.data #輸出資料集
print iris.target #輸出真實標籤
print len(iris.target)
print iris.data.shape #150個樣本 每個樣本4個特徵
#匯入決策樹DTC包
from sklearn.cluster import KMeans
clf = KMeans(n_clusters=3)
y_pred = clf.fit_predict(iris.data)
print y_pred
#降維繪圖
from sklearn.decomposition import PCA
pca = PCA(n_components=2) #輸出兩維
newData = pca.fit_transform(iris.data) #載入N維
print newData
x = [n[0] for n in newData]
y = [n[1] for n in newData]
x1, y1 = [], []
x2, y2 = [], []
x3, y3 = [], []
#分別獲取類標為0、1、2的資料 賦值給(x1,y1) (x2,y2) (x3,y3)
i = 0
while i < len(newData):
if y_pred[i]==0:
x1.append(newData[i][0])
y1.append(newData[i][1])
elif y_pred[i]==1:
x2.append(newData[i][0])
y2.append(newData[i][1])
elif y_pred[i]==2:
x3.append(newData[i][0])
y3.append(newData[i][1])
i = i + 1
import matplotlib.pyplot as plt
#三種顏色
plot1, = plt.plot(x1, y1, 'or', marker="o", markersize=10)
plot2, = plt.plot(x2, y2, 'og', marker="o", markersize=10)
plot3, = plt.plot(x3, y3, 'ob', marker="o", markersize=10)
plt.title("K-Means Text Clustering") #繪製標題
plt.legend((plot1, plot2, plot3), ('A', 'B', 'C'))
#plt.scatter(x1, x2, c=clf.labels_, s=100)
plt.show()
輸出結果如下所示,可以對每類散點樣式進行設定,同時繪製標註圖形。
希望基礎性文章對您有所幫助,如果文章中有錯誤或不足之處還請海涵。
最後推薦作者的最新出版書籍:
本書主要包括上下兩冊:
《Python網路資料爬取及分析從入門到精通(爬取篇)》
《Python網路資料爬取及分析從入門到精通(分析篇)》
(By:Eastmount 2018-07-18 深夜12點 http://blog.csdn.net/eastmount/ )
相關文章
- Python matplotlib繪製散點圖Python
- 資料探勘-層次聚類聚類
- 【python資料探勘課程】二十四.KMeans文字聚類分析互動百科語料Python聚類
- 資料探勘之 層次聚類聚類
- Python Matplotlib繪製條形圖的全過程Python
- 【python資料探勘課程】二十七.基於SVM分類器的紅酒資料分析Python
- [1]Python 中用 matplotlib 繪製熱點圖(heat map)Python
- 利用 Matplotlib 繪製資料圖形(一)
- 利用 Matplotlib 繪製資料圖形(二)
- Android 開發:使用繪製基金圖表類(帶快取的圖表類)Android快取
- Python Matplotlib繪製氣溫圖表Python
- [Python] Matplotlib 圖表的繪製和美化技巧Python
- matplotlib繪製圖形
- 使用python matplotlib實現動圖繪製Python
- Python 利用pandas和matplotlib繪製餅圖Python
- Python 利用pandas 和 matplotlib繪製柱狀圖Python
- Matplotlib 繪製折線圖
- python繪圖之matplotlibPython繪圖
- UML類圖繪製例項
- Python資料視覺化:5段程式碼搞定散點圖繪製與使用,值得收藏Python視覺化
- 小提琴圖的繪製方法:Python matplotlib實現Python
- Python有哪些資料探勘工具?五大類Python
- Matplotlib直方圖繪製技巧直方圖
- 繪圖: Python matplotlib簡介繪圖Python
- matplotlib的直方圖繪製(筆記)直方圖筆記
- Python 利用pandas和matplotlib繪製柱狀折線圖Python
- 用matplotlib散點圖用餅圖示記
- 【python資料探勘課程】二十三.時間序列金融資料預測及Pandas庫詳解Python
- Python-matplotlib-入門教程(一)-基礎圖表繪製Python
- 非完整資料聚類初探聚類
- python matplotlib畫圖改變圖示題和座標軸標題的字型大小Python
- 譜聚類的python實現聚類Python
- 使用Matplotlib繪製3D圖形3D
- Matplotlib呼叫imshow()函式繪製熱圖函式
- R繪圖(2): 離散/分類變數如何畫熱圖/方塊圖繪圖變數
- R繪圖(7): 把散點圖的點換成扇形繪圖
- 【python資料探勘課程】二十六.基於SnowNLP的豆瓣評論情感分析Python
- SAP MM 物料主資料分類檢視的資料會帶入批次分類檢視裡?