大數據可視化實驗(八):大數據可視化綜合實訓

目錄

一、實驗目的... 1

二、實驗環境... 1

三、實驗內容... 1

1)Python縱向柱狀圖實訓... 1

2)Python水平柱狀圖實訓... 3

3)Python多數據并列柱狀圖實訓.. 3

4)Python折線圖實訓... 4

5)Python直方圖實訓... 5

6)機器學習中的可視化應用... 6

四、思考問題... 8

五、總結與心得體會... 8

一、實驗目的

掌握python工具,能夠進行數據可視化;

掌握商業案例中的數據分析與數據可視化

二、實驗環境

硬件:微型圖像處理系統,

包括:主機, PC機;

操作系統:Windows 11????????

應用軟件:Jupyter Notebook, pycharm

數字圖像處理軟件:Excel/Python

三、實驗內容

1)Python縱向柱狀圖實訓

為了顯示男女愛好的人數分布,本實驗使用Python繪制縱向柱狀圖實現數據可視化。編寫以下代碼:

import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=15)
plt.title("男女愛好人數分布圖"); #圖標題
num = np.array([14325, 9403, 13227, 18651])
ratio = np.array([0.75, 0.6, 0.22, 0.1])
men = num * ratio
women = num * (1-ratio)
x = ['足球','游泳','看劇','逛街']
width = 0.5
idx = np.arange(len(x))
plt.bar(idx, men, width, color='red', label='男性用戶')
plt.bar(idx, women, width, bottom=men, color='gray', label='女性用戶')? #這一塊可設置bottom,top,如果是水平放置的,可以設置right或者left
plt.xlabel('應用類別')
plt.ylabel('男女分布')
plt.xticks(idx+width/2, x, rotation=40)
#bar圖上顯示數字
for a,b in zip(idx,men):
??? plt.text(a, b+0.05, '%.0f' % b, ha='center', va= 'bottom',fontsize=12)
for a,b,c in zip(idx,women,men):
??? plt.text(a, b+c+0.5, '%.0f' % b, ha='center', va= 'bottom',fontsize=12)
plt.legend()
plt.show()

運行結果如下,可以看出男性的愛好多數為足球和游泳,女生的愛好多數為看劇和逛街:

2)Python水平柱狀圖實訓

為了繪制水平柱狀圖,編寫以下代碼:

import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=15)
# 假設我們有一組數據,表示不同的類別的值
categories = ['類別 A', '類別 B', '類別 C', '類別 D', '類別 E']
values = [20, 35, 30, 10, 25]

# 創建水平柱狀圖
plt.barh(categories, values, color='skyblue')

# 添加標簽和標題
plt.xlabel('')
plt.ylabel('類別')
plt.title('水平柱狀圖實訓')

# 可選:顯示每個條形上方的值
for index, value in enumerate(values):
??? plt.text(value, index, str(value))

# 顯示圖形
plt.show()

運行結果如下:

3)Python多數據并列柱狀圖實訓

本實驗展示了不同的專業在不同學校的招收人數分布圖情況。編寫以下代碼:

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams[ 'font.sans-serif'] =[ 'Microsoft YaHei'] #設置字體
plt.title("不同學校專業招生人數分布圖"); #圖標題
x=np.arange(5)
y=[400,170,160,90,50]
y1=[300,180,150,70,90]
bar_width=0.5
tick_label=["計算機","機械","電子","管理","物理"]
plt.bar(x,y,bar_width,color="r",align="center",label="學校A")
plt.bar(x+bar_width,y1,bar_width,color="y",align="center",label="學校B")
plt.xlabel("專業")
plt.ylabel("招生人數")
plt.xticks(x+bar_width/2,tick_label)
plt.legend()
plt.show()

根據結果顯示,學校a和學校b均在計算機專業招收人數最多,具體的情況如下圖:

4)Python折線圖實訓

本實驗繪制2019年1月~2019年12月的房價變化折線圖,編寫以下代碼:

import matplotlib.pyplot as plt
plt.rcParams[
'font.sans-serif'] =[ 'Microsoft YaHei'] #設置字體
x1 = ['2019-01', '2019-02', '2019-03', '2019-04', '2019-05', '2019-06', '2019-07', '2019-08',
?????
'2019-09', '2019-10', '2019-11', '2019-12']
y1 = [
9700, 9800, 9900, 12000, 11000, 12400, 13000, 13400, 14000, 14100, 13900, 13700]
plt.figure(
figsize=(10, 8))
# 標題
plt.title("房價變化")
plt.plot(x1, y1,
label='房價變化', linewidth=2, color='r', marker='o',
????????
markerfacecolor='blue', markersize=10)
# 橫坐標描述
plt.xlabel('月份')
# 縱坐標描述
plt.ylabel('房價')
for a, b in zip(x1, y1):
??? plt.text(a, b, b,
ha='center', va='bottom', fontsize=10)
plt.legend()
plt.show()

從結果可以看出,在2019年1月的時候房價最低,在2019年12月的時候,房價最高整體呈上升趨勢,其中在2019年5月的時候下降。運行結果如下:

5)Python直方圖實訓

本實驗繪制正態分布直方圖,圖的值表示當前值的概率密度,為了方便信息展示只展示-4到4的概率密度,編寫以下代碼:

import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=15)
plt.rcParams['axes.unicode_minus'] = False? # 解決保存圖像是負號'-'顯示為方塊的問題
#
生成一個隨機樣本數據集
#
假設我們有一個正態分布的隨機樣本
data = np.random.normal(loc=0, scale=1, size=1000)

# 創建直方圖
# bins
參數定義了直方圖的箱數
# density
參數設置為 True,可以展示概率密度而不是頻率
plt.hist(data, bins=30, density=True, alpha=0.7, color='blue', edgecolor='black')

# 設置直方圖的標題和坐標軸標簽
plt.title('正態分布直方圖')
plt.xlabel('')
plt.ylabel('概率密度')

# 可選:顯示直方圖的均值和標準差
mean = np.mean(data)
std_dev = np.std(data)
plt.text(60, 0.0075, f'Mean: {mean:.2f}')
plt.text(60, 0.005, f'Std Dev: {std_dev:.2f}')

# 顯示圖形
plt.show()

運行結果如下:

6)機器學習中的可視化應用

在機器學習中,可視化是一個重要的工具,它可以幫助我們理解數據的特征、模型的性能以及數據點之間的關系。以下是一個簡單的Python代碼示例,展示了如何在機器學習中應用可視化。編寫以下代碼:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
import seaborn as sns

# 創建一個簡單的二分類數據集
X, y = make_classification(n_samples=100, n_features=2, n_redundant=0, n_informative=2,
?????????????????????????? random_state=1, n_clusters_per_class=1)

# 使用邏輯回歸模型
model = LogisticRegression()
model.fit(X, y)

# 繪制決策邊界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01),
???????????????????? np.arange(y_min, y_max, 0.01))

Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.figure(figsize=(10, 6))
plt.contourf(xx, yy, Z, alpha=0.4)
plt.scatter(X[:, 0], X[:, 1], c=y, s=20, edgecolor='k')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Decision Boundary using Logistic Regression')
plt.show()

這段代碼首先導入了所需的庫,然后創建了一個簡單的二分類數據集。接著,使用LogisticRegression模型進行擬合。

在繪制決策邊界的部分,我們首先定義了x和y的最小值和最大值,然后創建了一個網格來覆蓋整個數據點的范圍。使用模型在這些網格點上的預測結果來填充這個區域,從而繪制出決策邊界。

最后,使用plt.scatter繪制了原始數據點,并用不同的顏色表示不同的類別。plt.contourf用于繪制決策邊界的填充圖。運行結果如下:

四、思考問題

Python軟件功能強大,除了上述要實現的功能,大家可以自己進行擴展。

五、總結與心得體會

在完成上述的可視化制作實驗后,我有以下幾點心得體會:

  1. 理解數據分布:通過制作直方圖和折線圖,我更好地理解了數據的分布情況和隨時間的變化趨勢。直方圖特別適合展示連續數據的分布,而折線圖則能夠清晰地展示數據隨時間的變化。
  2. 比較不同類別:縱向柱狀圖和水平柱狀圖都是比較不同類別之間數值大小的有效工具。我學會了如何根據需要選擇使用縱向或水平柱狀圖,這取決于我希望強調的信息和圖表的布局。
  3. 并列柱狀圖的挑戰:在制作多數據并列柱狀圖時,我意識到需要仔細選擇顏色和標簽,以確保每個數據集都能被清晰地區分和理解。
  4. 技術實現:通過這些實驗,我加深了對matplotlib和seaborn庫的了解,學會了如何使用這些工具來創建各種圖表。我也認識到了代碼的可讀性和模塊化設計的重要性,這使得代碼更易于維護和更新。
  5. 數據可視化的重要性:我了解到,良好的數據可視化可以幫助觀眾快速抓住數據的關鍵信息。圖表的清晰度和準確性對于有效傳達分析結果至關重要。
  6. 機器學習可視化的洞察:在機器學習項目中,可視化不僅用于展示數據,還可以用于展示模型的決策過程,如決策邊界。這有助于理解模型是如何工作的,以及它在特定情況下可能的優缺點。
  7. 迭代與改進:在實驗過程中,我學會了如何根據反饋不斷迭代和改進我的圖表。一個好的圖表往往需要多次修改,包括調整顏色、字體大小、標簽和布局。
  8. 工具的局限性:我也意識到了可視化工具的局限性。例如,某些類型的數據或分布可能不適合用柱狀圖或直方圖來展示。因此,選擇最合適的圖表類型來傳達特定的信息是一項重要的技能。
  9. 注釋和解釋:我學會了在圖表中添加適當的注釋和解釋,這對于使圖表自解釋非常重要。這包括軸標簽、圖例、標題和任何必要的文本說明。
  10. 未來方向:最后,我意識到數據可視化是一個不斷發展的領域,總有新的技術和方法出現。我計劃繼續學習,以便能夠利用最新的工具和技術來提高我的可視化技能。
  11. 通過這些實驗,我不僅提升了我的技術技能,而且對如何有效地傳達數據信息有了更深刻的理解。這些經驗對我的數據科學職業生涯將是寶貴的資產。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38261.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38261.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38261.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PAT 1108 Finding Average

原題鏈接:PAT 1108 Finding Average The basic task is simple: given N real numbers, you are supposed to calculate their average. But what makes it complicated is that some of the input numbers might not be legal. A legal input is a real number in…

Python只讀取Excel文件的一部分數據,比如特定范圍的行和列?

如何只讀取Excel文件的一部分數據,比如特定范圍的行和列? 在Python中,如果你只想讀取Excel文件的特定范圍,可以使用以下方法: pandas: Pandas是一個強大的數據處理庫,它有一個內置函數read_excel()用于讀…

在不修改.gitignore的情況下,忽略個人文件的提交

Git提供了一個assume-unchanged命令&#xff0c;可以將文件標記為“假設未更改”。這意味著Git將忽略該文件的更改&#xff0c;不會將其提交到倉庫中。要使用該命令&#xff0c;只需運行以下命令&#xff1a; git update-index --assume-unchanged <file>其中&#xff0…

邊緣網關帶來的效益探討-天拓四方

邊緣網關作為連接物理世界與數字世界的橋梁&#xff0c;在智能制造、智慧城市等各個領域中發揮著關鍵作用。通過收集、處理來自各種傳感器和設備的數據&#xff0c;邊緣網關為實時決策、優化生產流程以及提高運營效率提供了強有力的支持。下面我們將探討邊緣網關帶來的效益。 …

鏈路全貫通,價值引領數據能力升級|愛分析報告

數據能力已經成為企業的核心競爭力。政策驅動數據產業發展加速&#xff0c;如2023年國家數據局成立&#xff1b;2024年&#xff0c;《“數據要素”三年行動計劃&#xff08;2024-2026年&#xff09;》正式發布&#xff1b;并且 2024年起正式將數據資源視為資產納入財務報表&…

C++——list類用法指南

一、list的介紹 1、list是可以在常數范圍內在任意位置進行插入和刪除的序列式容器&#xff0c;并且該容器可以前后雙向迭代 2、list的底層是雙向鏈表結構&#xff0c;雙向鏈表中每個元素存儲在互不相關的獨立節點中&#xff0c;在節點中通過指針指向其前一個元素和后一個元素 …

yum安裝并初始化PG

獲取yum源 從官網獲取yum源&#xff0c;并安裝rpm包 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm安裝 yum install -y postgresql14-server啟動并初始化 sudo /usr/pgsql-14/bin/postgre…

機器學習-EM算法

目錄 一:最大似然估計 二:EM算法 加入隱變量 EM算法推導 1.Jensen不等式 點個贊唄!!! 一:最大似然估計 舉個栗子:一個袋子里有很多個球,每次放回的取一個球,取了十次,其中有六次白球,4次黑球。那么就認為袋子里面取到白球的概率為6/10,黑球的概率為4/10。…

pytorch-01

加載mnist數據集 one-hot編碼實現 import numpy as np import torch x_train np.load("../dataset/mnist/x_train.npy") # 從網站提前下載數據集&#xff0c;并解壓縮 y_train_label np.load("../dataset/mnist/y_train_label.npy") x torch.tensor(y…

Vue 全局狀態管理新寵:Pinia實戰指南

文章目錄 前言全局狀態管理基本步驟&#xff1a;pinia 前言 隨著Vue.js項目的日益復雜&#xff0c;高效的狀態管理變得至關重要。Pinia作為Vue.js官方推薦的新一代狀態管理庫&#xff0c;以其簡潔的API和強大的功能脫穎而出。本文將帶您快速上手Pinia&#xff0c;從安裝到應用&…

uniapp如何根據不同角色自定義不同的tabbar

思路&#xff1a; 1.第一種是根據登錄時獲取的不同角色信息&#xff0c;來進行 跳轉到不同的頁面&#xff0c;在這些頁面中使用自定義tabbar 2.第二種思路是封裝一個自定義tabbar組件&#xff0c;然后在所有要展示tabbar的頁面中引入使用 1.根據手機號碼一鍵登錄&#xff0c…

SpringMVC的基本使用

SpringMVC簡介 SpringMVC是Spring提供的一套建立在Servlet基礎上&#xff0c;基于MVC模式的web解決方案 SpringMVC核心組件 DispatcherServlet&#xff1a;前置控制器&#xff0c;來自客戶端的所有請求都經由DispatcherServlet進行處理和分發Handler&#xff1a;處理器&…

三個方法教大家學會RAR文件轉換為ZIP格式

在日常工作當中&#xff0c;RAR和ZIP是兩種常見的壓縮文件格式。有時候&#xff0c;大家可能會遇到將RAR文件轉換為ZIP格式的情況&#xff0c;這通常是為了方便在特定情況下打開或使用文件。下面給大家分享幾個RAR文件轉換為ZIP格式的方法&#xff0c;下面隨小編一起來看看吧~ …

在mfc程序中,如何用c++找到exe文件所在的路徑

在 MFC&#xff08;Microsoft Foundation Class&#xff09;程序中&#xff0c;你可以使用 GetModuleFileName 函數來獲取當前運行的可執行文件&#xff08;.exe&#xff09;的路徑。 以下是一個示例代碼&#xff1a; #include <afxwin.h> #include <iostream>in…

KVM性能優化之CPU優化

1、查看kvm虛擬機vCPU的QEMU線程 ps -eLo ruser,pid,ppid,lwp,psr,args |awk /^qemu/{print $1,$2,$3,$4,$5,$6,$8} 注:vcpu是不同的線程&#xff0c;而不同的線程是跑在不同的cpu上&#xff0c;一般情況&#xff0c;虛擬機在運行時自身會點用3個cpus&#xff0c;為保證生產環…

通過MATLAB控制TI毫米波雷達的工作狀態

前言 前一章博主介紹了MATLAB上位機軟件“設計視圖”的制作流程,這一章節博主將介紹如何基于這些組件結合MATLAB代碼來發送CFG指令控制毫米波雷達的工作狀態 串口配置 首先,在我們選擇的端口號輸入框和端口波特率設置框內是可以手動填入數值(字符)的,也可以在點擊運行后…

匯凱金業:投資交易如何才能不虧損

投資交易中永不虧損是一個理想化的目標&#xff0c;現實中無法完全避免虧損。然而&#xff0c;通過科學的方法、合理的策略和嚴格的風險管理&#xff0c;投資者可以大幅減少虧損&#xff0c;并提高長期盈利的概率。以下是一些關鍵策略和方法&#xff0c;幫助投資者在交易中盡量…

【CSRF】

CSRF 原理&#xff1a;誘導用戶在訪問第三方site時&#xff0c;訪問攻擊者構造的site,攻擊者site會對原site進行惡意操作。 burp模擬攻擊&#xff1a; 對一個博客系統點擊發布文章時&#xff0c;Burp Suite抓包&#xff0c;右鍵CSRF PoC功能 -> Engagament tools -> Gen…

洛谷 P3954 [NOIP2017 普及組] 成績

本文由Jzwalliser原創&#xff0c;發布在CSDN平臺上&#xff0c;遵循CC 4.0 BY-SA協議。 因此&#xff0c;若需轉載/引用本文&#xff0c;請注明作者并附原文鏈接&#xff0c;且禁止刪除/修改本段文字。 違者必究&#xff0c;謝謝配合。 個人主頁&#xff1a;blog.csdn.net/jzw…

太陽能輻射系統加速材料老化的關鍵設備光照老化實驗箱

光照老化實驗箱概述 光照老化實驗箱是一種模擬太陽光照射對材料影響的實驗設備&#xff0c;主要用于加速材料的自然老化過程&#xff0c;以此來評估材料在實際使用環境中的耐久性和穩定性。該設備廣泛應用于汽車、航空、建筑、塑料制品等行業&#xff0c;尤其在汽車領域&#…