Python 是一種流行的程式語言,它擁有豐富的資料來源和強大的數據處理能力。在 Smart eVision 中,Python 可以幫助您通過使用 Smart eVision Button 控制項元件設計 Action Flow 並觸發執行 Python 程式來取得運算值。新增頁面時也可以直接取得 Python Data 資料來源。
利用 Smart eVision Python Visual 控制項元件和 Smart eVision 的資料來源,您甚至可以繪製出視覺化圖表。此外,您還可以使用 Smart eVision Python Visual 控制項元件抓取網路上即時的 Python 資料來源,來做 CSV 繪圖和其他相關 Python 應用。建議具備 Python 技能。
此章節包含主題:
Python 是一種程式語言,可以用來建立AI模型。在建立模型時,需要進行以下步驟:
收集足夠的資料來進行學習(可以使用爬蟲或 API 等方式)。
整理並清洗資料,以保證資料的品質和一致性。
使用訓練數據訓練模型,計算模型參數以使模型能夠根據訓練數據做出預測。
完成訓練後使用模型進行預測,輸入新的數據並預測結果。
加強和改進模型,使其更加精確(可以通過增加訓練數據、改變模型結構或使用新的算法來實現)。

有了上面 Python 原理認識,接下來將開始您介紹 Python 與 Smart eVision 相關應用,我們已經做好的範例, 如果您想要在Smart eVision 平台上觀看、測試。
可以點選下載連結,回存範例<倫敦出租自行車-AI模型>
http://www.lcnet.com.tw/download/temp/Python.zip
回存方式請參考操作手冊中系統管理的「備份回存工具」:點我查看更詳細說明
Button Action Flow 是 Smart eVision 中的一個功能,可以讓您使用 Python 程式設計按鈕的行為。當您在 Smart eVision 中設計按鈕時,可以使用 Button Action Flow 功能來指定按鈕按下後應該執行哪些 Python 程式。這些 Python 程式可以用來執行各種不同的操作,例如收集資料、計算運算值、更新資料庫等。
使用 Button Action Flow 功能的好處是,可以讓您專注於 Python 程式的設計,而無需擔心界面的設計細節。只需將 Python 程式與 Button Action Flow 功能相結合,就可以透過簡單的按鈕操作來執行複雜的任務。
回存之後進入到設計端,Python 的 AI 流程是寫在 Button 的 Action Flow 中。請切換到「預測」頁籤、點選畫面中預測的button, 接著點選右上角事件的頁籤,點擊下面的Flow,進入到 Action 的 Flow 中

中間就會顯示 Action Flow 的流程,其中會有一個「執行 Python 取得運算值」,點選中間的編輯步驟,就可以進入到 Python 編輯。

標題可以為這個 Action 命名,在 Python Script 中,您可以使用多種方法來取得參數、載入模型、預測和定義變數(這邊定義成result),變數就可以下拉選擇在 Python 所定義的變數,點選右下角的確定 ,就可以關閉 Python Script 狀態。

上面 Python Script 完整語法如下。
|
from pandas import DataFrame import pandas as pd import autokeras as ak from keras.models import load_model import os #取得參數 data = [] data.append([{{$param.t1$}},{{$param.t1$}},{{$param.hum$}}, {{$param.wind_speed$}}, {{$param.weather_code$}}, {{$param.is_holiday$}}, 0, {{$param.season$}}, {{$param.hour$}}]) x_test = pd.DataFrame(data,columns=['t1','t2', "hum", "wind_speed", "weather_code", "is_holiday", "is_weekend", "season", "time"]) #載入模型 loaded_model = load_model('/Python/work/london_bike/auto_model/best_model', custom_objects=ak.CUSTOM_OBJECTS) #預測 # ------------------------------------------------------------------------------ predicted = loaded_model.predict(x_test).flatten() * 1000 result = round(predicted[0]) |
回到設計端,點選右上角的存檔、預覽就可以儲存規格,執行頁面,切換到預設頁籤,下面的預測按鈕點選時,就會去執行Python Script 最後將得到的變數,顯示在旁邊的Label。

AI模型訓練附註: |
|---|
|
■程式解析 使用 Libraries numpy - 矩陣運算, 數學函式庫 pandas - 用來直接讀 CSV 檔 tensorflow- 由 Google 開發的機器學習函式庫 autokeras - 自動化機器學習, 不用學習一堆的演算法 sklearn.model_selection - 將資料分為訓練用及測試用 ■程式大綱 載入及整理資料 訓練模組 衡量模組 輸出模組 |
AI模型預測附註: |
|---|
|
■程式解析 使用 Libraries pandas - 用來將參數組成 DataFrame autokeras - 自動化機器學習, 不用學習一堆的演算法 keras.models - 用來載入已訓練好的模組 ■程式大綱 由 SV 條件值取得參數 載入模型 預測 ■原理 透過 Python Action 將條件值 (設計:設計時套用值, 執行:動態初值)傳入 Python, 由訓練好的模型預測, 再將結果傳回顯示 Python Action 可以指定傳回值的變數名稱 |
可以在 Smart eVision 中使用。如果要使用 Python 資料來源套用在 Smart eVision 控制項元件上,您需要:
1.在 Smart eVision 中新增一個控制項元件。例如,可以新增一個表格元件(例如:DataGrid)。
2.在 Smart eVision 中設計好您的 Python 資料來源。資料來源可以是資料庫、CSV 檔案等。
3.在控制項元件的設定頁面中,找到 "資料來源" 選項。
可以按照以下步驟進行操作:
進入到設計畫面,選擇要想要新增的專案資料夾,點選新增 Dashboard Page

顯示名稱: Python Datasource,點選右下角的「確定」

資料來源選 [服務],然後 Python Data

Python Script 貼上以下語法,並點選右下角的確定。
|
from pandas import DataFrame data = [] # Define list data.append(['Alex',10, True]) # Append a list data.append(['Bob',12, True]) data.append(['Clarke',13, False]) df = DataFrame(data,columns=['Name','Age', "Is Married"]) # convert list to DataFrame |
附註: |
|---|
|
■程式解析 使用 Libraries: pandas.DataFrame - 在 Python 使用像 Table 的功能 簡單的由二維的 List 建立 DataFrame 傳回為 Table 加一行 print(df) 可輸出 DataFrame 內容 ■原理 任何 panda DataFrame 都會傳回當做 Table, 可以傳回多個 |
新增 DataGrid 連接 Python1.df, 將控制項中的 DataGrid 拖拉至畫面中,連接 Python1.df 就點選完成。


存檔,預覽執行就可以顯示取得Python資料來源。

Smart eVision Python Visual 是 Smart eVision 中的一個控制項元件,可以使用 Python 程式繪製各種圖表。要使用 Python Visual 繪出 Smart eVision 資料來源,您需要:
1.在 Smart eVision 中設計好您的資料來源。資料來源可以是資料庫、DW資料來源等。
2.在 Smart eVision 中新增一個控制項元件,套用 Smart eVision 的資料來源。
3.在 Python Visual 控制項元件中套用新增的控制項元件的資料來源並編寫 Python 程式,使用資料來源中的數據繪製圖表。
可以按照以下步驟進行操作:
新增Dashboard Page

顯示名稱:Python Visual

資料來源選 InsureDW

Control 選 PivotGrid

拖拉[金額]到資料,[類別名稱]到列

新增Python visual

連線 DW1.dwPivotGrid1

Python Script 貼上以下內容

|
import pandas as pd import matplotlib.pyplot as plt from matplotlib.ticker import ScalarFormatter import matplotlib as mpl ax = dataframe.plot.bar(x='類別名稱', y='金額') ax.yaxis.set_major_formatter(mpl.ticker.StrMethodFormatter('{x:,.0f}')) plt.rcParams['font.sans-serif'] = ['Microsoft JhengHei'] plt.rcParams['axes.unicode_minus'] = False plt.xticks(rotation=0) |
附註: |
|---|
|
■程式解析 使用 Libraries: matplotlib - 繪圖底層 透過 dataframe.plot.bar 繪出 Bar Chart 並 yaxis.set _major_formatter 設定 Y 軸格式 plt.xticks(rotation=0) 設定 X 軸文字為橫式 ■原理 會由 SV 轉入指定的 table 會固為變數 dataframe |
按確定。

按左上角存檔、預覽。

執行結果, 以Smart eVision 資料繪出直條圖。

如果要使用 Python Visual 繪出 Python 資料來源,您需要:
1.在 Python 程式中設計好您的資料來源。資料來源可以是資料庫、CSV 檔案、API 等。
2.在 Smart eVision 中新增一個 Python Visual 控制項元件。
3.在 Python Visual 控制項元件中编寫 Python 程式,使用資料來源中的數據繪製圖表。
可以按照以下步驟進行操作:
新增Dashboard Page

顯示名稱:Python Visual,或是命名想要的名稱,點選右下角的「確定」

出現資料來源的部份,可以先點選右下角「取消」,我們要直接在設計端的控制項裡面寫Python語法,抓取繪圖資料

到設計端,將控制項中的 PythonVisual 元件拖拉到中間的畫布上

點選拉到中間畫布的 PythonVisual 元件, 點選畫面右上邊的「編輯Script」,進入Python 語法的輸入、編輯

將 Python 語法輸入,輸入好請點選右下角的「確定」,就會跳出 Python 語法輸入的畫面

Python Script 貼上以下語法,請複製
|
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns #載入及整理資料 parse_dates = ['timestamp'] df = pd.read_csv('/Python/work/london_bike/data/london_merged2.csv', parse_dates=parse_dates) df['小時'] = df['timestamp'].dt.hour df = df.drop(columns=['t2']) df = df.drop(columns=['timestamp']) df = df.drop(columns=['is_weekend']) #計算相關性 df_corr_cnt = df.corr()[["數量"]].sort_values(by="數量", ascending =False).iloc[1: , :] #繪圖 plt.rcParams['font.sans-serif'] = ['Microsoft JhengHei'] plt.rcParams['axes.unicode_minus'] = False plt.figure(figsize=(3.2,6.6)) sns.heatmap(df_corr_cnt, annot =True, square=True, cmap = "BrBG", vmin =-1 ,vmax=1) |
附註: |
|---|
■程式解析 使用 Libraries: matplotlib.pyplot - 繪圖底層 seaborn - 基於 matplotlib 的資料視覺化工具 pandas - 用來直接讀 CSV 檔 ■程式大綱 讀取CSV 計算相關性 繪圖 |
有順利讀取 Python csv 就會呈現繪圖,點選左上角的「存檔」、「預覽」

執行時,就會呈現Pytho的繪圖畫面

■資源
https://www.kaggle.com/datasets/hmavrodiev/london-bike-sharing-dataset
https://www.flag.com.tw/activity/F1385/
■Python 學習資源
https://www.w3schools.com/python/default.asp
https://www.w3schools.com/python/pandas/pandas_plotting.asp
http://homepage.ntu.edu.tw/~weitingc/fortran_lecture/Lecture_P_2_1Dplot.slides.html
https://tw.alphacamp.co/blog/learn-python