陳擎文教學網:python人工智慧在商情預測之應用
1.重要性:是商業數據分析領域的高級篇章(進階)
2.對應工作職缺:資料科學家/Data Scientist
3.使用技術:機器學習,深度學習
4.使用模組:機器學習(numpy, sklearn模組),深度學習(keras模組)
5.學習次第:
(1).先學數據截取,數據分析,數據視覺化的技術:(pandas模組)
(2).再學迴歸分析的技術:機器學習(numpy,sklearn模組)
(3).再學人工智慧的技術:深度學習(keras模組)


資源(Resource)

作業(homework)

chp0.課程簡介

【一,基礎概念】

【二,機器學習,Machine Learning】
【二.一,監督式學習:Supervised learning】
【二.一.一,迴歸預測:Regression Prediction】

範例5-1.用sklearn模組,『簡易3步驟』建立『線性迴歸模型』來預測『美元-黃金關係』

範例5-2.用『numpy模組』,『簡易3步驟』建立『線性迴歸』模型來預測『美元-黃金關係』

範例5-13.用『sklearn模組』,『5步驟』建立『非線性迴歸多項式』模型來預測『美元-黃金關係』

【二.一.二,分類預測:Classification Prediction】

範例5-3.用sklearn模組,『簡易3步驟』建立『KNN,K鄰近』模型來預測『客戶關係管理裡面的客戶價值度』

範例5-4.用sklearn模組,『簡易3步驟』建立『邏輯迴歸』模型來預測『客戶關係管理裡面的客戶價值度』

範例5-5.用sklearn模組,『簡易3步驟』建立『決策樹tree』模型來預測『鳶尾花朵資料集』的花品種』

範例5-6.用sklearn模組,『簡易3步驟』建立『隨機森林法』模型來預測『鳶尾花朵資料集』的花品種』

範例5-7.用sklearn模組,『簡易3步驟』建立『支持向量機算法SVM』模型來預測『客戶關係管理裡面的客戶價值度』


【二.二,非監督式學習:Un-Supervised learning】
【二.二.一,集群分析,分群分析:clustering】

範例5-8.用sklearn模組,『簡易3步驟』建立『K-means分群』模型來把『動物園的動物數據自動分群』

【二.二.二,降維簡化:dimension reductoin】

範例5-9.用sklearn模組,『簡易3步驟』建立『主成份分析PCA』降維模型,來把『二維數據』壓縮降維成『一維數據』


【三,深度學習,Deep Learning】
【三.一,迴歸預測:Regression Prediction】

範例5-10.用『深度學習的keras』模組,『簡易4步驟』建立『類神經網路』的『一顆神經元』『線性迴歸模型』,輸入x值,預測y

範例5-11.用『深度學習的keras』模組,『簡易4步驟』建立『類神經網路』的『多顆神經元』『非線性迴歸模型』,輸入x值,預測y

【三.二,分類預測:Classification Prediction】

範例5-12.用『深度學習的keras』模組,『簡易4步驟』建立『類神經網路』的『多顆神經元』『非線性分類模型』,由『面紙的耐酸度,強度』來預測『客戶評估面紙的好壞』

【二,機器學習,Machine Learning】
【二.一,監督式學習:Supervised learning】
【二.一.一,迴歸預測:Regression Prediction】

範例6-1.用sklearn模組,『入門5步驟』建立『線性迴歸模型』來預測『美元-黃金關係』

範例6-2.用『numpy模組』,『入門5步驟』建立『線性迴歸』模型來預測『美元-黃金關係』

範例6-13.用『sklearn模組』,『入門5步驟』建立『非線性迴歸多項式』模型來預測『美元-黃金關係』

【二.一.二,分類預測:Classification Prediction】

範例6-3.用sklearn模組,『入門5步驟』建立『KNN,K鄰近』模型來預測『客戶關係管理裡面的客戶價值度』

範例6-4.用sklearn模組,『入門5步驟』建立『邏輯迴歸』模型來預測『客戶關係管理裡面的客戶價值度』

範例6-5.用sklearn模組,『入門6步驟』建立『決策樹tree』模型來預測『客戶關係管理裡面的客戶價值度』

範例6-6.用sklearn模組,『入門6步驟』建立『隨機森林法』模型來預測『屬於鳶尾花朵的品種』

範例6-7.用sklearn模組,『入門6步驟』建立『支持向量機算法SVM』模型來預測『鐵達尼號乘客是否生存』


【二.二,非監督式學習:Un-Supervised learning】
【二.二.一,集群分析,分群分析:clustering(K-means)】

範例6-8.用sklearn模組,『入門7步驟』建立『K-means分群』模型來把『動物園的動物數據自動分群』

【二.二.二,降維簡化:dimension reductoin】

範例6-9.用sklearn模組,『簡易3步驟』建立『主成份分析PCA』降維模型,來把『影響紅酒的13種特種參數』簡化降維


【三,深度學習,Deep Learning】
【三.一,迴歸預測:Regression Prediction】

範例6-10.用『深度學習的keras』模組,『入門6步驟』建立『類神經網路』的『一顆神經元』『線性迴歸模型』,輸入x值,預測y

範例6-11.用『深度學習的keras』模組,『入門6步驟』建立『類神經網路』的『多顆神經元』『非線性迴歸模型』,輸入x值,預測y

【三.二,分類預測:Classification Prediction】

範例6-12.用『深度學習的keras』模組,『入門6步驟』建立『類神經網路』的『多顆神經元』『非線性分類模型』,預測患者是否患有糖尿病

範例6-13.建立『類神經網路』,預測患者鳶尾花品種(使用OneHotEncoder)



【二,機器學習,Machine Learning】


【二.一,監督式學習:Supervised learning】

【二.一.一,迴歸預測:Regression Analysis Prediction】

【用numpy模組做數據預測】

【用sklearn模組做數據預測】

【二.一.二,分類預測:Classification Prediction】


【二.二,非監督式學習:Un-Supervised learning】

【二.二.一,集群分析,分群分析:clustering】

範例5-8.用sklearn模組,『簡易3步驟』建立『K-means分群』模型來把『動物園的動物數據自動分群』

範例6-8.用sklearn模組,『入門7步驟』建立『K-means分群』模型來把『動物園的動物數據自動分群』

【二.二.二,降維簡化:dimension reductoin】

範例5-9.用sklearn模組,『簡易3步驟』建立『主成份分析PCA』降維模型,來把『二維數據』壓縮降維成『一維數據』

範例6-9.用sklearn模組,『簡易3步驟』建立『主成份分析PCA』降維模型,來把『影響紅酒的13種特種參數』簡化降維



【三,深度學習,Deep Learning】


【用keras模組建立類神經網絡系統,做數據預測】

【三.一,迴歸預測:Regression Prediction】

範例5-10.用『深度學習的keras』模組,『簡易4步驟』建立『類神經網路』的『一顆神經元』『線性迴歸模型』,輸入x值,預測y

範例5-11.用『深度學習的keras』模組,『簡易4步驟』建立『類神經網路』的『多顆神經元』『非線性迴歸模型』,輸入x值,預測y

範例6-10.用『深度學習的keras』模組,『入門6步驟』建立『類神經網路』的『一顆神經元』『線性迴歸模型』,輸入x值,預測y

範例6-11.用『深度學習的keras』模組,『入門6步驟』建立『類神經網路』的『多顆神經元』『非線性迴歸模型』,輸入x值,預測y

範例8-4.用標準化類別函數StandardScaler(),把『波士頓房價資料集』先標準化處理,再用『keras類神經網絡模型』預測趨勢線

範例9-4.用『管道器pipeline』封裝『keras類神經網絡模型』,處理『波士頓房價資料集』並預測趨勢線

【三.二,分類預測:Classification Prediction】

範例5-12.用『深度學習的keras』模組,『簡易4步驟』建立『類神經網路』的『多顆神經元』『非線性分類模型』,由『面紙的耐酸度,強度』來預測『客戶評估面紙的好壞』

範例6-12.用『深度學習的keras』模組,『入門6步驟』建立『類神經網路』的『多顆神經元』『非線性分類模型』,預測患者是否患有糖尿病

範例8-3.用標準化類別函數StandardScaler(),把『客戶關係管理的客戶價值度RFM資料集』先標準化處理,再用『keras類神經網絡模型』預測分類

範例9-3.用『管道器pipeline』封裝『keras類神經網絡模型』,處理『客戶關係管理的客戶價值度RFM資料』並預測分類

範例10-7.用『管道器pipeline』封裝『sklearn裡面的類神經函數+5種機器模型』,處理『員工流失率資料集』並預測A員工是否會離職



資源
上課工具 線上黑板( Online blackboard) 廣播教學 上課錄影影片 Goole輸入法(Input:exe)
證照考試:商用數據應用師 考試題庫 (從中約抽70題) 報名證照相關說明與方法 考試方式:100題單選題,每題1分,70分及格 考試指定用書
證照考試:SAS 機器學習國際認證 考試題庫 報名證照相關說明與方法 先上課再考試。考試方式:50~55 題選擇題與填充題,考試語言:英文,通過標準:65%答對即通過 考試指定軟體:SAS Viya Virtual Lab
求職相關參考網站 111年上市櫃公司員工平均薪資排名 【ESG-InfoHub】揭露企業非主管職務之員工薪資 台灣夜市小店變億級女裝王國,靠的是數據分析 突破困境!實體店面的逆轉武器:數據應用
數據集,資料集,dataset UCI的各種資料集 Kaggle的各種資料集 考試方式:100題單選題,每題1分,70分及格 考試指定用書
上課參考教材 書籍:跨領域學 Python:資料科學基礎養成 書籍:Python 資料科學與人工智慧應用實務 書籍:一行指令學Python:用機器學習掌握人工智慧
書籍:用Pandas掌握商務大數據分析 進階書籍:Python商業數據分析:零售和電子商務案例 pandas官網(英文) w3schools的pandas教學(英文)
pandas參考教材 w3Cschool的pandas教學(中文) Steam教學網-python 蓋若pandas 教程 pandas的df的操作函數
colab繪圖如何顯示中文,方法1 ☎#colab顯示繁體中文,方法1 問題:matplotlib繪圖,會發生中文無法顯示的問題
參考:colab繪圖如何顯示中文
程式碼
#--------------------------------
# colab繪圖顯示繁體中文
#--------------------------------
import matplotlib
# 先下載台北黑體字型
!wget -O taipei_sans_tc_beta.ttf https://drive.google.com/uc?id=1eGAsTN1HBpJAkeVM57_C7ccp7hbgSz3_&export=download import matplotlib
# 新增字體
matplotlib.font_manager.fontManager.addfont('taipei_sans_tc_beta.ttf')
# 將 font-family 設為 Taipei Sans TC Beta
# 設定完後,之後的圖表都可以顯示中文了
matplotlib.rc('font', family='Taipei Sans TC Beta')
colab繪圖如何顯示中文,方法2 ☎#colab顯示繁體中文,方法2 ☎程式碼
#--------------------------------------
# 課本的中文處理
#--------------------------------------
import matplotlib as mpl
import matplotlib.font_manager as fm

!wget "https://www.wfonts.com/download/data/2014/06/01/simhei/simhei.zip"
!unzip "simhei.zip"
!rm "simhei.zip"

fm.fontManager.addfont('SimHei.ttf')
mpl.rc('font', family='SimHei')
# 這一行能讓字體變得清晰
%config InlineBackend.figure_format = 'retina'
windows的spyder繪圖如何顯示中文 ☎解決:windows的spyder,會發生中文無法顯示的問題
參考:windows繪圖如何顯示中文
程式碼
#在windows 10 的spyder,繪圖如何顯示中文
#使用微軟正黑體(Microsoft JhengHei)
plt.rcParams['font.sans-serif'] = ['Microsoft JhengHei']

#有些中文字體在碰到負號時,會無法正常顯示,尤其是內建的字體,加入以下語法就可以解決『負號無法顯示』問題
plt.rcParams['axes.unicode_minus'] = False
在colab如何更改目錄 ☎解決:在colab如何更改目錄的問題
程式碼
import os
os.chdir("/content/drive/MyDrive/Colab Notebooks")
!ls
解決簡體字csv造成亂碼 ☎解決簡體字csv,打開後都是亂碼的問題:

第2 種方式:
(1)先執行Excel 軟體,新增空白活頁簿,
(2)然後在上方功能選項中點選「資料」➜「取得外部資料」➜ 「從文字檔」 → 「選擇csv文件」,
選擇你的CSV 檔,
在「匯入字串精靈」對話框中選擇檔案原始格式65001:Unicode(UTF-8) 即可。

若是utf-8還是有亂碼,再改成
在「匯入字串精靈」對話框中選擇檔案原始格式54986:簡體中文(GB18080) 即可。

(3)打勾:我的資料有標題
(4)分隔符哈:逗號

程式模板 ☎存入excel檔案,並且畫柱狀圖
程式模板chp8-6.樞紐分析表的必要指令:展開 ☎輸出excel檔案:建立3個資料表sheet(英文成績,數學成績,中文成績)
打開chrome網頁線上英文字典功能 ☎如何安裝google chrome的網頁線上英文字典工具:
➜google chrome的右上角工具➜更多工具➜擴充功能
➜左上角主選單➜開啟chrome線上應用程式商店
➜勾選:google製作,免費
➜搜尋:google dictionary➜安裝
➜到chrome右上擴充功能➜點按google dictionary的『詳細資料』➜擴充功能選項
➜my language=chinese
➜打勾2個:Pop-up definitions:
(1)反白單字翻譯:Display pop-up when I double-click a word
(2)ctrl+拖曵整段翻譯: Display pop-up when I select a word or phrase

上課用excel 學生成績-chinese 學生成績-有缺值-chinese 學生成績-物理歷史-chinese 學生成績-amy-simon-chinese
學生成績-生日-chinese 學生成績-分組-chinese 人事資料-chinese 男女時薪-chinese
學生成績-english 學生成績-有缺值-english 學生成績-分組-english 圖書資料-chinese
上課用csv 小費tips-chinese 小費tips-english 學生成績-chinese 學生成績-english
圖書資料-chinese
上課用其它資料庫 mySQL-ch09 SQLite-student json-學生成績 xml-personnel
課本商業範例資料庫 商業銷售分析-sales csv 系所生源分析-excel 股市分析-台積電聯發科股票線型-excel 問卷資料分析-excel
pandas參考教材 十分鐘入門 Pandas(英文) 十分鐘入門 Pandas(英文) 10分鐘的Pandas入門-繁中版 十分鐘入門 Pandas(中文)
pandas參考教材 pandas官網全部章節翻譯 pandas官網全部章節翻譯
pandas參考教材(英文) kaggle pandas教學 100 pandas tricks to save you time and energy 官網0.22.0:pandas documentation
pandas參考教材(中文) Pandas 101:資料分析的基石 資料科學家的pandas 實戰手冊:掌握40 個實用 簡明 Python Pandas 入門教學 資料分析必懂的Pandas DataFrame處理雙維度資料方法
pandas速查手冊 pandas 速查手册 - 盖若 Pandas速查手冊中文版 - 知乎專欄 Pandas速查手冊中文版- 騰訊雲開發者社區
pandas速查手冊 Pandas中DataFrame基本函數整理(全) Pandas 魔法筆記(1)-常用招式總覽 pandas的df的操作函數
資料集dataset 小費資料集Tips Dataset(csv) kaggle小費資料集範例A Waiter's Tips example 【視覺化】小費(tips)資料集分析 小費(tips)資料集提取和檢視相應資料
SQL語法 SQL語法教程 pandas vs SQL
資料分析4大模組(runoob) numpy pandas matplotlib scipy
w3c、w3school、w3cschool、runoob、w3capi比較 runoob流量監控儀表板
w3school vs runoob 1.w3school中文版是直接google翻譯英文版
2.runoob.com翻譯自英文版w3schools,但重新排版
3.runoob = run + noob(菜鳥,小白)
4.runoob是python,html,javascript中文版最好的教學網
官網 python官網 vscode官網    
python 教學網站 python 3(官網手冊中文) python 3教學(中文) python 3教學(中文) 簡易1小時教學
w3school(英文版)      
線上執行python online

https://www.python.org/shell/(建議用這個)

https://repl.it/languages/python3


https://www.onlinegdb.com/online_python_compiler

https://www.tutorialspoint.com/execute_python_online.php

用Anacond寫python(*建議使用)

到Anacond官網下載安裝

作業(homework)
作業1
作業2
作業3

 
chp1-1.前言
1.課程簡介投影片 2.學習程式的3種方法
1.現今企業的數據有哪些 2.運用數據三階段 3.資料生產的四步驟 3.資料最基本的三個概念
5.什麼是大數據Big Data 6.大數據分析與傳統商業分析的差異 7.大數據的分析步驟 8.視覺化常用工具
9.什麼是大數據Big Data 10.大數據分析與傳統商業分析的差異 11.大數據的分析步驟 12.大數據的類型:結構化、非結構化、半結構化資料

1.現今企業的數據有哪些

1.現今企業的數據有哪些:
(1)所謂大數據,即是透過不同來源、渠道取得的海量數據資料,
現今企業如果想做數據蒐集的方法變得非常多元,包括:

(2)來自用戶的第一方數據:
☎傳統的用戶資料建檔、問卷調查,
☎網頁的瀏覽行為等數據的追蹤,
☎App應用程式的瀏覽行為等數據的追蹤、
☎物聯網IoT設備傳遞的數據等,
這些都是可以蒐集到。

還有更多可捕捉用戶站外資訊的非第一方數據也漸漸被重視,
(3)透過交換共享得到的第二方數據:
☎第二方數據 (也稱為第二方或 2P 數據):是另一個同行公司收集的數據,但可由另一家公司通過購買或協作訪問。
☎營銷人員在希望擴展其營銷資料庫以吸引新的潛在客戶時,通常會購買它。
☎例如,如果一個為女性製作的服裝品牌決定增加一個男裝系列,並且需要相關的目標來行銷,就可以向外同行公司購買男裝的數據資料庫。

(4)任何與商業需求有關的第三方數據:
☎第三方數據 (也稱為第三方或3P數據):是來自第三方的數據,該第三方已聚合了多個數據源並使其可供購買。
☎第三方數據的缺點:是它可能缺乏準確性和品質,因此重要的是了解數據來自何處以及數據使用年限.

(5)比較:第一方、第二方和第三方數據之間的差別:
第一方、第二方和第三方數據之間的主要區別在於:『來源』。
☎第一方數據:由其『存儲/擁有的公司』收集。
☎第二方數據:由『同行公司』收集,並由另一家公司購買(或通過合作協定與他們共用)。
☎第三方數據:是從『多個未知來源』收集的,並由一家公司購買。


(6)參考文獻:
1.第一方、第二方、第三方和零數據對廣告商意味著什麼
2.分析大數據在各領域的應用

2.運用數據三階段

1.市場上的數據需求,主要分為四個階段:
☎數據蒐集、
☎數據分析、
☎數據應用

(1)數據蒐集:蒐集第一方、第二方和第三方數據

☎傳統的用戶資料建檔、問卷調查,
☎網頁的瀏覽行為等數據的追蹤,
☎App應用程式的瀏覽行為等數據的追蹤、
☎物聯網IoT設備傳遞的數據等,

☎第二方數據:向同行公司購買數據。

☎第三方數據:向『其他管道,如:數據收集公司』購買。


(2)數據分析:原始數據(raw data)要先處理過

☎透過多元渠道獲取大量數據資料往往是原始數據(raw data),無法直接使用,
☎必須經過一層又一層的處理過程
☎處理方法1:數據檢查(data inspecting)
☎處理方法2:數據清理(data cleansing)
☎處理方法3:數據轉換(data transforming)


(2-1)處理方法2:數據清理(data cleansing)
A.資料清理是資料前處理的第一步,需要先將資料中的問題處理。
B.收載資料時一定會遇到各式髒資料,有的資料樣態會導致無法轉入資料庫,而有的資料會在塞入資料庫時,出現錯位、亂碼等各式各樣非預期的情況,此時倉儲資料清理的準則變得極為重要,因將攸關於整個系統資料的統一。
C.資料清理的準則設定可以從三個角度著手:
☎「檔案類型」問題的清理
☎「欄位型態」問題的清理
☎「資料邏輯」問題的清理
D.☎數據清洗:按照一定的規則剔除或者填充不滿足實際需要的業務資料。
E.☎清洗主要包括三部分的內容:
第一部分是測試資料、
第二個是錯誤的資料,
第三個是缺失的資料。
錯誤的資料我們可以關注:『資料是否重複』、格式是否『錯誤、欄位描述』的資訊是否錯誤。





D.(2-1-a)例如:資料來源檔案類型:純文字檔
☎資料內容以純文字的方式儲存的特色:
欄位與欄位之間以特定符號作為分隔,
例如:逗號、分號或|等等,
☎較常被使用的是「逗號」

☎可能發生的問題:
然而使用各符號作為分隔時,會遇到其中一種情況是:以逗號為例,如該欄位內容包含逗號,將會造成欄位內容分割時發生錯誤,但此逗號明明屬於資料的內容,卻被誤認為是分隔符號,使得分割完的資料對應到錯誤的欄位

☎解決的辦法:
將內容值前後都加上雙引號後,再以逗號分隔串連各欄位資料


D.(2-1-a)例如:檔案類型:資料庫
☎讀取資料庫文字欄位型態的資料時,內容包含換行符號,系統就認為這筆資料已經讀取完,則換行符號後面的資料內容即為下一筆資料的開頭,無法完整的將一筆資料讀取進來。
☎解決辦法:是移除換行符號,若需要保留換行符號,


D.(2-1-b)例如:欄位型態:日期
☎格式:同時出現以 斜線分隔(YYYY/MM/DD)、無分隔符號(YYYYMMDD) 或 連接號(YYYY-MM-DD) 的日期格式。
☎處理方式:透過判斷式將內容使用的符號,或沒有符號的純文字格式,換成資料庫可接受的日期格式。

☎西元年/民國年:同一欄位參雜西元年與民國年的日期。
☎處理方式:若以西元年格式存入資料庫,年若小於1911,則將 年份+1911 ;年若大於1911,則直接轉入。

☎值異常:例如日期出現2月30日、年份早於1911年等,或是不可為NULL的欄位卻出現NULL值等非正常的日期。
☎處理方式:異常的日期通常已經無法追溯到正確的值,或來源的日期就是髒資料,可統一為特定日期(如:1911年1月1日),日後看到即可確定來源的資料因有異常而清理過。


D.(2-1-b)例如:欄位型態:特殊字元
☎說明:文字是最容易造成轉檔失敗的型態,因為此型態可容許輸入任何類型的字元,例如:特殊字元,但資料庫本身並非接納的了所有字元,較特別的會無法轉入,或需要做其他特殊的轉換才能收載。
☎處理方式:必須找出那一筆,替換掉『特殊字元』後,再登錄進資料庫。


D.(2-1-c)例如:資料邏輯:縣市代碼
☎台灣曾經經歷過縣市升格為直轄市,有更換過縣市的中文名稱,那麼資料也須跟著配合調整。
☎處理方式:是做一張新舊對照縣市代碼與名稱的轉換表,日後資料若有縣市資訊需求,即可勾稽此資料表,讓縣市升格前與後的資料,能自由並適當的轉換,得到想要的資訊。


D.(2-1-c)例如:資料邏輯:身分證號的規則判斷
☎身分證號的編碼有固定的規則,
第一碼是初次戶籍所在的縣市代碼,
第二碼是性別(1:男性;2:女性),
第三到九碼是流水碼,
最後一碼第十碼是檢查碼,檢查碼會以第一到第九碼之英數字組合經過權重計算而得。
☎若要確認身分證是否有效,可依據這些規則去做判斷。


(2-3)處理方法3:數據轉換(data transforming)
A.☎數據轉化:按照一定的規則、技術手段轉化不同格式,或者顆粒度不同的資料。
B.(1)例如:格式的轉換,比如說時間格式,在不同的業務系統可能會有不同的時間格式,但是到我們大資料系統,為了方便下游資料的使用,我們會統一轉換成一種資料格式。包括一些欄位編碼也是這樣。
C.(2)資料顆粒度的轉換:我們在DW層的資料明細層到資料應用層的整個過程,都是顆粒度不斷轉化的一個過程。還包括一些業務規則、商務規則和一些指標。


☎補充:數據顆粒度:資料顆粒度指數據的細緻程度。
資料顆粒度越高,細緻程度越高,意味著可以進行更準確的分析。
然而,需要指出的是,資料顆粒度直接決定資料庫需要的儲存空間。
高顆粒度的資料需要更多儲存空間;如果資料顆粒度太高,能夠識別出背後的資料,隱私相關挑戰也會加大。

(4)參考文獻:
1.資料指標體系(1)如何理解資料顆粒度、維度以及指標

3.資料生產的四步驟

1.資料生產的四步驟:
• 資料指標體系搭建
• 資料獲取
• 資料存儲
• 數據清洗

2.建立資料後,即可開始資料分析

4.資料最基本的三個概念

1.資料最基本的三個概念:
☎顆粒度
☎維度
☎指標

(1)顆粒度
☎資料的顆粒度是指數據的 “粗細”,也就是我們看資料的視野的大小,或者說格局的大小。
☎例如:
一個電商公司,同樣是看GMV(總銷售額),CEO關注的可能是『今年總的GMV』是多少,
而業務老闆關注的可能是『每月的GMV』如何,
具體到某個小團隊,關注的點可能就是某些商品,『每天的GMV』如何了。

☎資料顆粒度最常見的劃分是:時間


(2)維度
☎資料的維度:是指看待事物不同的角度。
☎是從不同角度來看一件事,會得到不同的結論。
☎在做資料分析時也是一樣的。分析一個活動,或者一個策略對用戶的吸引時,如果我們以『新增用戶數』作為分析的指標(也就是展開方式,分析點),

☎可以列為『維度』進行拆分的項目:
• 時間維度:拆分為早晨、中午、晚上
• 性別維度:男性、女性、未知
• 受教育程度:小學、中學、大學、研究生、博士
☎通過維度的分解,我們可以看到每個部分的變動,和整體的變化趨勢是否相同,是否存在不同,而哪些不同點往往會成為我們接下來分析的重點。

☎顆粒度和維度的『相似性』:例如“時間”這個要素,在兩個部分都出現了
☎顆粒度和維度的『差異性』:不同在於拆分的方式不同
• 顆粒度:是一種縱向的聚合,類似於金字塔的形狀,不同的顆粒度都代表著不同的聚合程度
• 維度:是一種橫向拆分的模式。類似于把鏡子打碎成不同的部分,每個部分都是獨立的,把所有部分合在一起又能拼成完整的整體


(2-1)指標
☎資料指標:是衡量事物發展方式及程度的一種單位或者方法,一般通過對原始資料進行加減乘除等操作生成得到。
☎例如:長度,是把所有部分加在一起得到的一種衡量外在大小的單位。

☎列舉一些常見網路流量的資料指標:
• DAU(daily active user):每天,“活躍”過的用戶數的加總,count(distinct user_id) group by day
• MAU(monthly active user):每個月,“活躍”過的用戶的加總,count(distinct user_id) group by month
• 留存率(次日、7日、30日):今天“活躍”過的用戶的總量,一段時間後的某個時間點,還活躍的比例
• 轉化率:兩個有遞進的環節之間,從上層到下層用戶轉化的比例,例如:CTR=實際點擊次數/展示量



(4)參考文獻:
1.大數據前的資料清理
2.分析大數據在各領域的應用

5.什麼是大數據Big Data

1.為什麼有大數據的問題
現在的企業資料,因為以下的興起,造成大量數據的需求: ☎網路網路資料(社交網站,交易資料)
☎物聯網IoT, Internet of Things
☎感測器sensor


2.大資料的來源
資料來源主要分為以下三類:
(1)社交數據:
☎顧名思義,社交資料來源於社交媒體評論、發帖、圖片以及與日俱增的視頻檔。隨著全球 4G 和 5G 蜂窩網路的普及,到 2023 年,全球手機視頻使用者將增至 27.2 億。
☎雖然社交媒體及其使用趨勢瞬息萬變、難以預測,但作為數位資料的主要來源,其穩定增長趨勢是不會改變的。

(2)機器數據:
☎物聯網設備和機器都配有感測器,能夠發送和接收數位資料。物聯網感測器能夠幫助企業採集和處理來自整個企業的設備、工具和裝置的機器資料。
☎從天氣和交通感測器到安全監控,全球範圍內的資料生成設備正在迅速增多。
☎據 IDC 估計,到 2025 年,全球物聯網設備數量將超過 400 億,生成的資料量幾乎占全球數位資料總量的一半。

(3)交易資料:
☎交易資料是世界上發展速度和增長速度最快的資料。
☎例如,一家大型國際零售商每小時處理超過 100 萬筆客戶交易,全球那麼多採購和銀行交易,生成的資料量會有多麼驚人。
☎此外,交易資料越來越多地由『半結構化』資料組成,包括圖片和注釋等,使得管理和處理難度不斷增加。



3.大數據的五大特性:

(1)大數據的3V特性: ☎資料量(Volume)
☎資料類型(Variety)。
☎資料傳輸速度(Velocity)

☎Volume(資料量) 無論是天文學、生物醫療、金融、聯網物間連線、社群互動…每分每秒都正在生成龐大的數據量,如同上述所說的 TB、PB、EB 規模單位。

☎Variety(資料多元性)
真正困難的問題在於分析多樣化的資料:從文字、位置、語音、影像、圖片、交易數據、類比訊號… 等結構化與非結構化包羅萬象的資料,彼此間能進行交互分析、尋找數據間的關聯性。

☎Velocity(資料即時性)
大數據亦強調資料的時效性。隨著使用者每秒都在產生大量的數據回饋,過去三五年的資料已毫無用處。
一旦資料串流到運算伺服器,企業便須立即進行分析、即時得到結果並立即做出反應修正,才能發揮資料的最大價值。


(2)大數據的4V特性:
☎資料量(Volume)
☎資料類型(Variety)
☎資料傳輸速度(Velocity)
☎資料真實性(Veracity)
在3V成為大數據的主要定義後,隨著儲存資料的成本下降、取得成本也下降,大數據發展出第四個特性:Veracity,意旨除了資料量,也需要確認資料的真實性,過濾掉造假的數據與異常值後,分析出來的結果才能達到準確預測的目的。



(3)大數據的5V特性:
☎資料量(Volume)
☎資料類型(Variety)
☎資料傳輸速度(Velocity)
☎資料真實性(Veracity)
☎價值(Value)
大量、快速取得,來源多樣的資料,經過真實性考驗之後,擁有一定的價值,是大數據的核心架構




4.多大的資料量才算大數據Big Data
☎資料量要多大才能說是大數據?
根據維基百科的定義,資料大小從幾TB(Terabyte)到幾PB(Petabyte)不等




5參考文獻:
(1).什麼是大數據
(2).巨量資料(wiki)
(3).大數據到底是什麼意思?事實上,它是一種精神
(4).認識大數據定義、分析與工具
(5).大數據,不只是很大的數據

6.大數據分析與傳統商業分析的差異

1.大數據分析與傳統商業分析的差異

(1)大數據分析:
☎分析方法:使用原始資料➜統計分析➜產生視覺化圖表➜產生報表
☎使用技術:原始資料,大數據,使用程式碼(python/R)進行結構化分析
☎預測方法:找出數據間的關聯性➜建立預測模型➜完成預測

2.參考文獻:
(1).大數據,不只是很大的數據

7.大數據的分析步驟

1.大數據的分析步驟:取得,儲存,運算,視覺化

☎大數據分析第一步:取得
數據隨時隨地都在產生,就連你上班時的行走路線,都可以成為商家選擇新店地址的參考資料。若是擁有大量使用者的企業,蒐集使用者的活動紀錄就可達到以數據預測未來的目標;若是較小型的企業,則可主動邀請使用者填寫問卷,逐步累積資訊量。

☎大數據分析第二步:儲存
由於資料量龐大,突破儲存技術式處理大數據的第一個難關。因此處理大數據時多使用分散式處理系統,透過分割資料與備份儲存,突破記憶體過小的障礙。

☎大數據分析第三步:運算
為達成預測未來的目的,機器可以透過分類、迴歸分析、排序、關聯分析等方式找出其中規律,並運用決策樹、遺傳演算法、人工神經網路等模型進行計算。

☎大數據分析第四步:視覺化
經過分析後的數據仍是數字與列表,不易閱讀。因此可搭配視覺化工具,將數據轉化為較容易閱讀與理解的形式。

2.參考文獻:
(1).認識大數據定義、分析與工具

8.視覺化常用工具

1.三大視覺化工具:Power BI,Tableau,Data Studio
功能:都能夠製作Dashboard(互動儀表板,報表平台)


(1)Power BI:微軟Microsoft
(1-1)費用:
☎免費版:若要編輯或瀏覽 Power BI Dashboard 僅能確保每個使用者都有在桌面下載 Power BI。
但免費PC版 Power BI 僅能在 Windows 上使用,
Mac 使用者僅能夠過網頁/付費方式使用
☎付費版:Power BI 可透過企業全體購買 Pro License(每個月300元),進而能夠做到網頁版共用。

☎付費版:公司內可以購買整個 Office 365 package(已經包含 Power BI Pro License),以利內部資料互通,大家也不用另外在電腦下載應用程式,直接網路編輯與瀏覽即可,Mac 使用者也能進而編輯
☎付費版:Power BI Premium,每月每個人600元。
Power BI定價參考網址

(1-2)功能:
Power BI 基本上功能與Tableau大同小異。
Power BI的操作比較簡單,更直覺化(Tableau操作較複雜)。
Power BI同時可支援 Python & R 的視覺化工具,
Power BI 的 DAX 語法相較 Tableau 好懂。


(2)Tableau
(2-1)費用:
☎Tableau Public 是一個免費的平台
☎Tableau Prep 免費試用30天
☎Tableau Desktop 免費試用14天
☎Tableau Server 免費試用
☎CRM Analytics(原稱 Tableau CRM)
認識大數據定義、分析與工具
☎Tableau 在企業級規模部署時Power BI比較便宜,因為雖然Power BI 隨附於O365中,但若要企業級部署,考慮Power BI Pro與Power BI Premium 間的功能差距,若真的要能做到 Tableau Server 大部分的功能,是一定需要 Premium 的,不然會受到算力、數據量大小、協作功能等的差距影響,很難做到企業級部署。
而Power BI Premium 在2021/02時所記錄的起始報價為 台幣 150,120。
Tableau的產品生態:


(2-2)功能:
☎功能強大。
☎2020/01年時統計,世界500強企業裡面96%是Tableau的客戶。


(3)Data Studio
(3-1)費用:
☎google雲端軟體,完全免費的平台

(3-2)功能:
☎優點:因為 Google 產品大多都是可開權限共享,
所以要結合Google 其他應用程式(Big Query, Google Analytics),就可以直接串接到 Data Studio,因為便利而使用它。
☎優點:雲端使用,是目前線上最流暢的(因為google產品都是雲端產品),而且可以共同編輯
☎缺點:功能性而言,現在 Data Studio 在細節調整上還是略輸 Power BI 與 Tableau 一些


2.BI(Business Intelligence,商業智慧)市場分成2類:
(1)自助式分析組別:
組織裡面每個人都有能力利用此組別內的BI工具連接數據與探索數據,發表屬於自己的數據見解
例如:Power BI,Tableau,Data Studio

(2)報表組別:
大部份情況之下,因需要撰寫大量函式或需要寫SQL,需要由統一專業部門開發,如IT單位
例如:Finereport,Microstrategy



3.參考文獻:
(1).Tableau 與 Power BI 完整比較指南
(4).Tableau VS. PowerBI

9.大數據的類型:結構化、非結構化、半結構化資料

1.大數據的類型:結構化、非結構化、半結構化資料




(1)結構化資料:這類資料最容易整理和搜索,
☎主要包括:財務資料、機器日誌、人口統計明細等。
結構化資料很好理解,類似於 Excel 試算表中預定義的行列佈局。
這種結構下的資料很容易分門別類,資料庫設計人員和管理員只需要定義簡單的演算法就能實現搜索和分析。
不過,即使結構化資料數量非常大,也不一定稱得上大資料,因為結構化資料本身比較易於管理,不符合大資料的定義標準。
一直以來,資料庫都是使用 SQL 程式設計語言管理結構化資料。
SQL 是由 IBM 在 20 世紀 70 年代開發的。

(2)非結構化資料:
☎因為web2.0盛行後產生很多非結構資料。
☎(web 2.0內容:透過網路應用,以使用者為中心,促進網路上人與人間的資訊交換和協同合作)
☎(web 2.0範例:網路社群、網路應用程式、社群網站、部落格、Wiki)
☎資料包括:社交媒體內容、音訊檔、圖片、開放式客戶評論等。
☎這些資料符合大數據定義中:『大而複雜』的要求,也因此這些資料通常很難用標準的行列關係型數據庫捕獲。
大多數情況下企業若想搜索、管理或分析大量非結構化資料,只能依靠繁瑣的手動流程。
毫無疑問,分析和理解這類資料能夠為企業帶來價值,但是執行成本往往太過高昂。而且,由於耗時太長。
但是因為無法存儲在試算表或關係型數據庫中,所以非結構化資料通常存儲在資料湖、資料倉庫和 NoSQL 資料庫中。

(3)半結構化資料:
☎半結構化資料是結構化資料和非結構化資料的混合體。
☎例如:電子郵件,
因為其中的正文:屬於非結構化資料,
而寄件者、收件人、主題和日期:屬於結構化資料。
使用地理標記、時間戳記或語義標記的設備也可以同時提供結構化資料和非結構化內容。


3.參考文獻:
(1).什麼是大數據
(2).web 2.0
(4).Tableau VS. PowerBI

 

 

範例1-2.數據分析3部曲,與對應的工作職缺

(1)研究數據分析的3步驟圖:
☎步驟1:學習基礎數據分析1:pandas
☎步驟2:學習基礎數據分析2:SQL
☎步驟3:學習進階數據分析3:人工智慧(機器學習,深度學習)



(2)數據分析的相關工作職缺(數據分析職位的技能光譜圖):
☎工作職稱:DA/BA/DS/DE:
Business Analyst商業分析師(商業決策建議)
Data Engineer數據工程師(基礎第一線數據處理)
Data Analyst資料分析師(適用各領域的數據處理工作)
Data Scientist資料科學家(建模,人工智慧)




(3)商業分析決策的4步驟圖:
☎1.資料處理
☎2.資料分析
☎3.資料視覺化
☎4.商業分析決策




(4)資料分析常用工具:
☎1.python/pandas
☎2.SQL
☎3.power BI,tableau
☎4.機器學習,深度學習



 

範例1-3.數據分析常用工具


(1)資料分析常用工具:
☎1.python/pandas
☎2.SQL
☎3.power BI,tableau
☎4.機器學習,深度學習




(2)數據相關工具的職缺數排行榜2016:





(3)數據相關工具的職缺數排行榜2020:


 

範例1-4.數據相關的證照


(1)資料分析相關的證照:中華企業資源規劃學會『商用數據應用師』證照
☎1.中華企業資源規劃學會,大數據分析師
☎2.商用數據應用師


(2)資料分析相關的證照:SAS 機器學習國際認證
☎1.SAS 機器學習國際認證,報名方式
☎2.先上課再考試:認證校園班
☎3.使用軟體工具:SAS Viya Virtual Lab

 

範例1-5.數據分析的內容是什麼?


數據分析的內容主要分三種(統計,比較,預測)
(統計出現次數,分類比較,預測趨勢)


【一,基礎數據分析(python/pandas)】

1.查詢資料(1)

1.查詢資料(2)

1.查詢資料(3)

2.頻數分析,統計數量

3.(分1群)比較分析

4.描述性統計分析,直方圖,箱型圖

6.(分2群)交叉分析表,樞紐分析表

7.分群分析的5種題型

8.樞紐分析表,交叉分析圖的花式變化與進階技巧



【二,進階數據分析(機器學習/深度學習)】

11.關聯性分析association

12.迴歸預測分析regression

13.分類預測classification

 
chp1.安裝與使用python的四種方法
1.使用python的四種方法 2.Anaconda下載點 3.安裝anaconda 4.Anaconda cmd指令
5.建立Anaconda虛擬環境 6.使用Spyter編譯器 7.網頁版python編輯器jupyter notebook 8.其它線上雲端可編譯的python平台

1.前言

Python堪稱是大數據與AI時代的最重要程式語言,在資料處理上有著非常重要的地位。而隨著AI的興起,讓傳統的零售業、金融業、製造業、旅遊業,以及政府都爭相投入,無不希望能運用數據分析與預測來協助決策方向,也讓新興的數據分析師、資料分析師成為熱門職業,因此本課程將講解如何使用網絡爬蟲技術以掌握資料爬取分析、視覺化呈現,以及儲存交換應用的關鍵技術。

Python資料處理的三大技術分別是:擷取分析、視覺化呈現與儲存應用。
而其應用的範疇包括:網路爬蟲、資料正規化、資料視覺化、資料儲存與讀取(CSV、Excel、Google試算表、SQLite、MySQL)、批次檔案下載、公開資料應用、API建立、驗證碼辨識。

Python大數據分析最重要的四個模組

1.Python大數據分析最重要的四個模組
Python資料分析最重要的四個模組:pandas、numpy、scipy、matplotlib。

(1)pandas:是基於numpy的資料分析工具,能夠快速的處理結構化資料的大量資料結構和函數。
pandas模組應該是python用來進行一般日常的大數據分析,最重要的模組了。
因為pandas的DataFrame資料結構,可以快速的互通於所有的二維結構資料,包括『excel,csv,json,xml,mysql,任何的資料庫,網頁的表格資料,字典dict,二維串列list』
也就是pandas的DataFrame資料結構,可以與它們之間互相簡易的存取。
然後再根據DataFrame來進行想要的大數據分析,它提供內建的演算法與資料結構,能夠用一個指令,就可以進行二維資料的『排序,篩選,關鍵字查詢,任意區間範圍查詢,統計學計算,平均值,變異數,標準差,字串檢索,字串取代,欄位樞紐分析、小記、欄位加總,把二維資料任意方式圖形視覺化顯示』
而建立pandas的DataFrame資料結構,有兩種方式,可以用column的方式來輸入資料,也可以用row的方式來輸入資料。
所以pandas是大數據分析,非常實用的利器工具,是python資料分析的首選。

(2)Numpy: Numpy專門用來處理矩陣,它的運算效率比列表list串列更高效。
Numpy是Python進行專業的數值計算之重要模組,因為大多數提供科學計算的包都是用numPy的陣列作為構建基礎,因此在進行高等數學計算時,numpy就是大數據分析的最重要工具了,因為高等數學運算,都是以矩陣的方式來進行運算,例如人工智慧,機器學習,深度學習,類神經網路計算等。

(3)sscipy:是基於numpy的科學計算包,包括統計、線性代數等工具。

(4)matplotlib:是最流行的用於繪製資料圖表的 Python 庫
也可以結合pandas模組來繪圖。

2.執行python的四種方法

1.要編寫python有三種的方法:
一、方法1:安裝python單純的python
缺點:功能陽春,沒有太多的模組,無法馬上寫大數據分析程式。
安裝網址:python官網下載

二、方法2:安裝Anaconda
優點:會同時安裝python、1000多種數學繪圖模組、Spyder編輯器,能夠支援大數據分析。
缺點:會安裝了很多你用不到的模組,浪費硬碟空間。
安裝網址:到Anacond官網下載安裝

三、方法3:使用python官網線上shell
使用repl線上python

四、方法4:使用google雲端硬碟的雲端軟體:Cola,colaboratory
優點:Google 的 Colab 是一個讓你用網頁瀏覽器就能寫 Python 程式、並且執行的平台。
優點:Colab 提供免費的 GPU 讓你高效運算機器學習與深度學習演算法。
優點:Google Colab 預先幫你安裝好大家最常用的 Python 套件,幫你解決了一半以上的煩惱,讓 Python 新手可以不用在剛起步就學習環境部署的麻煩事。數據分析常用的 Pandas 與 Numpy、資料視覺化好用的 Seaborn 與 Matplotlib、還有機器學習必備的 xgboost 或 Tensorflow,這些都是 Colab 預先安裝好的套件。
不需要再自行安裝套件:(Terminal)輸入 pip install
優點:可以從 Google Drive 取得你要用的檔案、然後透過 Python 程式讀取;
優點:可以與google其它軟體整合,例如:也可以匯入 Google Sheet 的表格資料,然後用你最愛的視覺化套件(例如 Matplotlib)畫出美麗的圖表。
優點:Colab 其中一個厲害的地方就是,你除了可以執行 Python、也能執行 Command Line,只要在 Command Line 指令加上驚嘆號就能做到,像是 !mkdir。你可以在 Colab 裡 Python 程式碼寫到一半的時候,突然加進幾行 Command Line 來操作檔案,完成後,再讓 Python 程式碼接著寫下去,Python 與 Command Line 可以無痛切換。
優點:%%timeit:算出你的程式碼區塊花多少時間執行,分析你的演算法效率時很好用。
優點:%run my_script.py:執行你的另一個 Python 程式,如果你的程式還需要呼叫另一個程式,就需要使用。


3.Anaconda下載點

Anacond官網


3.安裝anaconda 3.安裝anaconda
功能:原始的python功能太陽春,若下載anaconda,則可以提供300多種的科學數學模組,可以提供大數據資料分析
(1)Anaconda是一個免費的Python和R語言的發行版本,用於計算科學(資料科學、機器學習、巨量資料處理和預測分析)
(2)因為Anaconda有很多的數據分析模組,所以大數據分析會使用到的『pandas、Numpy、Scipy』python package套件,在anaconda安裝完成時就已經包含在裡面了。
(3)Anaconda中文是森蚺(大蟒蛇)。
1)可以把Anaconda當作是Python的懶人包,除了Python本身(python2, 3) 還包含了Python常用的資料分析、機器學習、視覺化的套件
2).完全開源和免費
3).額外的加速、優化是收費的,但對於學術用途可以申請免費的 License
4).全平台支持:Linux、Windows、Mac
5).支持 Python 2.6、2.7、3.3、3.4,可自由切換,
6).內帶spyder 編譯器(還不錯的spyder編譯器)
7).自帶jupyter notebook 環境 (就是網頁版的python編輯器,副檔名為IPthon)

(4)常用套件:

Numpy: Python做多維陣列(矩陣)運算時的必備套件,比起Python內建的list,Numpy的array有極快的運算速度優勢
Pandas:有了Pandas可以讓Python很容易做到幾乎所有Excel的功能了,像是樞紐分析表、小記、欄位加總、篩選
Matplotlib:基本的視覺化工具,可以畫長條圖、折線圖等等…
Seaborn:另一個知名的視覺化工具,畫起來比matplotlib好看
SciKit-Learn: Python 關於機器學習的model基本上都在這個套件,像是SVM, Random Forest…
Notebook(Jupyter notebook): 一個輕量級web-base 寫Python的工具,在資料分析這個領域很熱門,雖然功能沒有比Pycharm, Spyder這些專業的IDE強大,但只要code小於500行,用Jupyter寫非常方便,Jupyter也開始慢慢支援一些Multi cursor的功能了,可以讓你一次改許多的變數名稱
(5)優點:省時:一鍵安裝完90%會用到的Python套件,剩下的再用pip install個別去安裝即可
(6)缺點:占空間:包含了一堆用不到的Python的套件(可安裝另一種miniconda)

(7)下載網址:https://www.anaconda.com/
選擇個人版:indivisual
https://www.anaconda.com/products/individual
→Download
→Windows
Python 3.7(會自動幫你安裝Python 3.7)
64-Bit Graphical Installer (466 MB)
32-Bit Graphical Installer (423 MB)

(8)安裝過程,要勾選
不勾選:add the anaconda to the system PATH(但是2020年,ananconda不建議勾選這個,容易發生錯誤)
勾選:Register anaconda as system Python 3.7

(9)安裝結束
→在windows開始→anaconda有6個項目,最常用的有3個
(1)anaconda prompt:可以直接下cmd指令
(2)Spyter:編譯器(還不錯的spyder編譯器)
(3)jupyter notebook(網頁版的python編輯器,副檔名為IPthon)
4.Anaconda prompt:cmd指令 4.使用anaconda prompt:直接下cmd指令
注意:windows 10 必須使用管理員來執行(點選anaconda prompt→滑鼠右鍵→以系統管理員身份進行)
(1)列出目前已經安裝的anaconda的模組與版本:
conda list

(2)對某個模組更新安裝
conda update 模組
範例:conda update ipython

(3)安裝某個模組
方法1:conda install 模組
範例:conda install numpy

# 安裝 NumPy 1.15 以後、 1.16 以前
conda install 'numpy>=1.15,<1.16'

方法2:pip install 模組
範例:pip install numpy

(4)解除安裝某個模組
方法1:conda uninstall 模組
範例:conda uninstall numpy

方法2:輸入 conda remove PACKAGE_NAME可以從目前的工作環境移除指定套件。
# 移除 NumPy
conda remove numpy numpy-base

方法3:pip uninstall 模組
範例:pip uninstall numpy

(5)在anaconda prompt執行python程式
方法1:
先到工作目錄:cd ch1
執行.py程式:python test1.py

方法2:python c:\chp1\test1.py

(6)常用指令
conda --version 檢視 conda 版本
conda update PACKAGE_NAME更新指定套件
conda --help 檢視 conda 指令說明文件
conda list --ENVIRONMENT 檢視指定工作環境安裝的套件清單
conda install PACAKGE_NAME=MAJOR.MINOR.PATCH 在目前的工作環境安裝指定套件
conda remove PACKAGE_NAME 在目前的工作環境移除指定套件
conda create --name ENVIRONMENT python=MAIN.MINOR.PATCH 建立新的工作環境且安裝指定 Python 版本
conda activate ENVIRONMENT 切換至指定工作環境
conda deactivate 回到 base 工作環境
conda env export --name ENVIRONMENT --file ENVIRONMENT.yml 將指定工作環境之設定匯出為 .yml 檔藉此複製且重現工作環境
conda remove --name ENVIRONMENT --all 移除指定工作環境
使用 conda list | grep numpy 檢查 Python 套件清單中是否還有 NumPy 套件
輸入 conda search PACKAGE_NAME可以檢視指定套件在 conda 中可安裝的版本列表。
# 檢視 NumPy 在 conda 中可安裝的版本
conda search numpy=1.16.3
5.用Anaconda prompt來建立虛擬環境 5.使用Anaconda prompt來建立虛擬環境
功能:可以建立多個Anaconda虛擬環境
例如:目前安裝後預設是python 3.x版本的環境,若要創建一個python 2.x的環境,就可以在Anaconda虛擬環境實現
(1)# 檢視電腦中可使用與目前所在的工作環境
conda env list

(2)使用 conda create --name ENVIRONMENT python=MAIN.MINOR.PATCH 指令可以建立出乾淨、極簡且資源隔絕的工作環境。
指令:conda create -n 虛擬環境名稱 python=版本 anaconda

# 建立一個名稱為 demo 的 Python 2 工作環境
conda create --name demo python=2
範例:建立py27env環境
conda create -n py27env python=2.7 anaconda

(3)輸入 conda activate ENVIRONMENT 可以啟動指定工作環境、
方法1:conda activate ENVIRONMENT
方法2:activate ENVIRONMENT
範例:activate py27env

方法3:到windows→開始→點選Anaconda prompt(py27env)

(4)關閉虛擬目錄,回到原本pytohn環境(base)
使用 conda deactivate 則是切換回預設的 base 工作環境。
方法1:conda deactivate
方法2:deactivate

(5)# 檢視 demo 工作環境中的套件
conda list -n py27env

(5)範例 A.建立py27env虛擬環境
conda create -n py27env python=2.7 anaconda
B.切換到py27env虛擬環境
activate py27env
C.檢視 demo 工作環境中的套件
conda list -n py27env
D.# 檢視 Python 版本
python --version
E.關閉虛擬目錄,回到原本pytohn環境(base)
deactivate

(5)複製一個與目前pyhon環境(或是py27env) 完全相同的工作環境
conda create -n 新虛擬環境名稱 --clone root
範例:conda create -n py27env2 --clone root

# 檢查明確所有虛擬環境名稱
conda info -e

(6)移除某個虛擬環境
conda remove -n 虛擬環境名稱 --all
範例:conda remove -n py27env --all

(7)常用指令整理
安裝:conda install
更新:conda update
移除:conda remove

在工作環境管理透過
創建:conda create
啟動:conda activate
停止:conda deactivate
匯出設定檔:conda env export
移除:conda remove
6.使用Spyter編譯器 6.使用Spyter:編譯器
(1)新增一個py檔案
File→ New file

print("你好,歡迎光臨")
print(1+1)

Run➤

(2)開啟已經存在的檔案
方法1:File→ Open
方法2:拖曵檔案總管的py檔案到Spyder

(3)在Spyter使用簡易智慧輸入
方法:按『tab』
範例:
先輸入p
然後按『tab』
出現list清單,都是p開始的指令

(4)程式除錯
方法1:若是這一行有指令寫錯,就會在最左邊出現三角形▲警告icon
方法2:在這個一行最左邊double click,就會出現中斷點(或是這一行按F12)
7.jupyter notebook網頁版的python編輯器 7.jupyter notebook
(1)功能:是網頁版的python編輯器,副檔名為IPthon
會開啟瀏覽器:http://localhost:8888/tree
對應的硬碟目錄 = C:\Users\電腦名稱
(例如: C:\Users\user)

(2)練習線上編輯一個簡單python程式
A.右方→New→Python3
在cell裡面輸入In[1]
a = ("apple","grape","banana")
print(a[2])

B.Run

C.修改檔案名稱→Untitled→exp1-3

D.查詢雲端檔案放置位置:C:\Users\電腦名稱\exp1-3.ipynb

(3)二種不同的Run方式
A.Run:會新增一個new cell
B.Ctrl+Enter:會停留在原本的cell

(4)在jupyter notebook使用簡易智慧輸入
方法:按『tab』
範例:
先輸入p
然後按『tab』
出現list清單,都是p開始的指令

(5)在jupyter notebook編輯的檔案無法讓python IDE編譯
jupyter notebook編輯的檔案是.ipynb
與python的.py不同
改善方法:只能把程式碼複製貼上,在兩個平台交流
8.其它線上雲端可編譯的python平台 8.其它線上雲端可編譯的python平台
網站:http://rep.it/languages/python3
 

 
範例11-1:看2組數據的關聯性(用定量的關聯係數corrcoef來表示)
#題目:已經知道這段期間,美元與黃金的關係數據,請預測美元與黃金數據之間的關聯性大不大?
#重點:看2組數據的關聯性,最簡單的方法:
#方法:使用numpy模組的一個函數:np.corrcoef(x,y)
#功能:可以看出定量的關聯:
例如1:若兩筆數據的關聯係數: c1 =0 ➜ 表示2者無關聯,
例如1:若兩筆數據的關聯係數: c1 =1 ➜ 表示2者關聯性大
# 指令:
import numpy as np
c1 = np.corrcoef(x, y)
(用定量的關聯函數corrcoef()來計算定量關係)

上課練習範例 結果圖 資料庫 程式碼

 
範例11-2.用numpy建立線性迴歸模型,建立2組數據的數學model(當美元=29.75,預測黃金價位)
# 題目:已經知道這段期間,美元與黃金的關係數據,請進行預測:當美元=29.75,黃金的價位=?
#重點1:建立2組數據的線性迴歸數學模型,有2種方法
(1)用numpy模組:最簡單
(2)用sci-kit learn模組
#重點3:用numpy建立線性迴歸數學模型(3步驟)
import numpy as np
#步驟1:先計算(y=ax+b)多項式的參數(a,b)➜ coef
指令:coef = np.polyfit(x, y, 1)
#步驟2:再建立數學模型➜ model = np.poly1d(coef)
#步驟3:進行預測(當美元=29.75,請問黃金的價位=?) ➜ model(29.75)

上課練習範例 結果圖 資料庫 程式碼

 
範例11-3.線性迴歸模型的視覺化(當美元=29.75,預測黃金價位)
#題目:已經知道這段期間,美元與黃金的關係數據,請進行預測:當美元=29.75,黃金的價位=?
#重點1:建立2組數據的非線性迴歸數學模型,有2種方法
(1)用numpy模組:最簡單
(2)用sylearn模組(sci-kit learn)
#重點3:用numpy建立線性迴歸數學模型(3步驟)
import numpy as np
#步驟1:先計算(y=ax+b)多項式的參數(a,b)➜ coef
指令:coef = np.polyfit(x, y, 1)
#步驟2:再建立數學模型➜ model = np.poly1d(coef)
#步驟3:進行預測(當美元=29.75,請問黃金的價位=?) ➜ model(29.75)

上課練習範例 結果圖 資料庫 程式碼

 
範例11-4.線性迴歸模型的預測與視覺化(當氣溫=26度,預測營業額)
#題目:捷運站旁的一家飲料店,有每日氣溫與營業額(千元)的數據,請做預測,當氣溫=26,30度的營業額為多少?
#重點1:建立2組數據的非線性迴歸數學模型,有2種方法
(1)用numpy模組:最簡單
(2)用sylearn模組(sci-kit learn)
#重點3:用numpy建立線性迴歸數學模型(3步驟)
import numpy as np
#步驟1:先計算(y=ax+b)多項式的參數(a,b)➜ coef
指令:coef = np.polyfit(x, y, 1)
#步驟2:再建立數學模型➜ model = np.poly1d(coef)
#步驟3:進行預測num ➜ model(num)


上課練習範例 結果圖 結果圖 資料庫 程式碼

 
範例11-5.線性迴歸模型的預測與視覺化(當身高=150,預測體重)
#題目:某高中男同學的身高與體重數據,請做預測,當身高=150,160,170,的體重為多少?
#重點1:建立2組數據的非線性迴歸數學模型,有2種方法
(1)用numpy模組:最簡單
(2)用sylearn模組(sci-kit learn)
#重點3:用numpy建立線性迴歸數學模型(3步驟)
import numpy as np
#步驟1:先計算(y=ax+b)多項式的參數(a,b)➜ coef
指令:coef = np.polyfit(x, y, 1)
#步驟2:再建立數學模型➜ model = np.poly1d(coef)
#步驟3:進行預測num ➜ model(num)


上課練習範例 結果圖 結果圖 資料庫 程式碼

 
範例12-1.numpy建立非線性迴歸模型來預測(當美元=29.75,預測黃金價位)
# 題目:請做預測,當美元=29.75,黃金的價位=?
#重點1:觀念:最簡單的非線性迴歸模型 = 多項式模型
#舉例:3次方多項式 y = ax^3 + bx^2 + cx + d
#特色:越高次方的多項式,越可以逼近任意的曲線
#重點2:建立2組數據的非線性迴歸數學模型,有2種方法
(1)用numpy模組:最簡單
(2)用sylearn模組(sci-kit learn)
#重點3:用numpy建立非線性迴歸數學模型(3步驟)
import numpy as np
#步驟1:先計算n次方多項式的參數(a,b,c....)=coef
指令:coef = np.polyfit(x, y, n)
#步驟2:再建立數學模型➜ model = np.poly1d(coef)
#步驟3:進行預測(當美元=29.75,請問黃金的價位=?) ➜ model(29.75)

上課練習範例 結果圖 資料庫 程式碼

 
範例13-1:線性迴歸模型的預測與視覺化(當氣溫=26度,預測營業額)
# 題目:捷運站旁的一家飲料店,有每日氣溫與營業額(千元)的數據,請做預測,當氣溫=26,30度的營業額為多少?
#重點1:建立2組數據的非線性迴歸數學模型,有2種方法
(1)用numpy模組:最簡單
(2)用sylearn模組(sci-kit learn)
#重點3:建立線性迴歸的模型sklearn model方法:(3步驟)
#步驟1:先建立數學模型
#第一種方法:
#import sklearn.linear_model as lm
#model = lm.LinearRegression()
#或第二種方法:
#from sklearn.linear_model import LinearRegression
#model = LinearRegression()
#步驟2:讓模型model學習歷史數據
# 學習指令:model.fit(dataframeX, dataframeY)
# 範例:model.fit(df['溫度'].to_frame(), df['營業額'].to_frame())
# 資料結構:df['溫度'] ➜ series
# 資料結構:df['溫度'].to_frame() ➜ dataframe
#步驟3:進行預測(當溫度=26,30度的營業額為多少?)
# 預測指令:model.predict(dataframe)
# 氣溫=26的dataframe =》 [[26]]

上課練習範例 結果圖 資料庫 程式碼

 
範例13-2:線性迴歸模型的預測與視覺化(當身高=150,預測體重)
# 題目:某高中男同學的身高與體重數據,請做預測,當身高=150,160,170,的體重為多少?
#重點1:建立2組數據的非線性迴歸數學模型,有2種方法
#(1)用numpy模組:最簡單
#(2)用sylearn模組(sci-kit learn)
#重點3:建立線性迴歸的模型sklearn model方法:(3步驟)
#步驟1:先建立數學模型
#import sklearn.linear_model as lm
#model = lm.LinearRegression()
#步驟2:讓模型model學習歷史數據
# 學習指令:model.fit(dataframeX, dataframeY)
# 範例:model.fit(df['溫度'].to_frame(), df['營業額'].to_frame())
# 資料結構:df['溫度'] ➜ series
# 資料結構:df['溫度'].to_frame() ➜ dataframe
#步驟3:進行預測(當溫度=26,30度的營業額為多少?)
# 預測指令:model.predict(dataframe)
# 氣溫=26的dataframe =》 [[26]]

上課練習範例 結果圖 資料庫 程式碼

 
範例13-3:線性迴歸模型的預測與視覺化(當美元=29.75,預測黃金價位)
#題目:請做預測,當美元=29.75,黃金的價位=?
#重點1:建立2組數據的非線性迴歸數學模型,有2種方法
#(1)用numpy模組:最簡單
#(2)用sylearn模組(sci-kit learn)
#重點3:建立線性迴歸的模型sklearn model方法:(3步驟)
#步驟1:先建立數學模型
#import sklearn.linear_model as lm
#model = lm.LinearRegression()
#步驟2:讓模型model學習歷史數據
# 學習指令:model.fit(dataframeX, dataframeY)
# 範例:model.fit(df['美元'].to_frame(), df['黃金'].to_frame())
# 資料結構:df['美元'] ➜ series
# 資料結構:df['美元'].to_frame() ➜ dataframe
#步驟3:進行預測(當美元=29.75,黃金的價位=?)
# 預測指令:model.predict(dataframe)
# 氣溫=26的dataframe =》 [[29.75]]

上課練習範例 結果圖 資料庫 程式碼

 
chp14.sklearn建立非線性迴歸模型來預測(複雜)
範例14-1.sklearn建立非線性迴歸模型來預測(當美元=29.75,預測黃金價位)
# 題目:請做預測,當美元=29.75,黃金的價位=?
#重點1:建立2組數據的非線性迴歸數學模型,有2種方法
#(1)用numpy模組:最簡單
#(2)用sylearn模組(sci-kit learn)
#重點3:建立非線性迴歸的模型sklearn model方法:(5步驟)
#步驟1:先建立數學模型(多項式)
import sklearn.preprocessing as prep
# 2次方多項式model
model = prep.PolynomialFeatures(degree=2)
#步驟2:將變數x(df['美元'])➜轉成多項式的各種特徵變數 ➜ x_poly = [x1, x2, x1x2, x1^2, x2^2]
說明示意圖:
# x = df['美元'] ➜ 轉換成 x_poly特徵變數
x_poly = model.fit_transform(df['美元'].to_frame())

#步驟3:再建立『線性』數學模型model2 ➜ y = f(x_poly)
import sklearn.linear_model as lm
model2 = lm.LinearRegression()
#步驟4:讓模型model學習歷史數據(x_poly, df['黃金'])
model2.fit(x_poly, df['黃金'].to_frame())

#步驟5:進行預測(當美元=29.75,黃金的價位=?)
print('當美元=29.75,黃金的價位 = ', model2.predict(model.fit_transform([[29.75]])))

上課練習範例 結果圖 資料庫 程式碼

 
chp15.sklearn建立多元線性迴歸模型y=f(x1,x2,x3...)來預測(複雜)
範例15-1:由腰圍身高預測體重,建立多元線性迴歸模型y=f(x1,x2,x3...)來預測
# 題目:請做預測,當腰圍=66,身高=164,預測學生的體重=?
#重點1:建立多元線性迴歸模型y=f(x1,x2,x3...),sklearn:(3步驟)
#步驟1:先建立數學模型
#import sklearn.linear_model as lm
#model = lm.LinearRegression()

#步驟2:讓模型model學習歷史數據
# 學習指令:model.fit(dataframeX, dataframeY)
# 注意重點:若是多個變數(x1,x2...),則要把多個變數(x1,x2...)合併成1個變數dataframeX(a1)
# 範例:model.fit(a1, df['體重'].to_frame())

# 合併的語法:pd.concat([df['腰圍'],df['身高']], axis=1)
# 資料結構:df['腰圍'] ➜ series
# 資料結構:df['腰圍'].to_frame() ➜ dataframe

#步驟3:進行預測(當腰圍=66,身高=164,預測學生的體重)
# 預測指令:model.predict(dataframe)
# 腰圍=66,身高=164的dataframe =》 [[66, 164]]
# 範例:print('當腰圍=66,身高=164,預測學生的體重=', model.predict([[66, 164]]))

上課練習範例 結果圖 資料庫 程式碼

 
範例15-2:由店面面積與距車站距離預測月營業額,建立多元線性迴歸模型y=f(x1,x2,x3...)來預測
# 題目:請做預測,當店面面積為10坪,與車站距離100公尺,預測請預測單月營業額(萬)=?
#重點3:建立多元線性迴歸模型y=f(x1,x2,x3...),sklearn:(3步驟)
#步驟1:先建立數學模型
import sklearn.linear_model as lm
model = lm.LinearRegression()

#步驟2:讓模型model學習歷史數據
# 學習指令:model.fit(dataframeX, dataframeY)
# 注意重點:若是多個變數(x1,x2...),則要把多個變數(x1,x2...)合併成1個變數dataframeX(a1)
a1 = pd.concat([df['面積'], df['距離']], axis=1)
範例:model.fit(a1, df['營業額'])

#步驟3:進行預測(當店面面積為10坪,與車站距離100公尺,預測請預測單月營業額(萬)=)
# 預測指令:model.predict(dataframe)
# 當店面面積為10坪,與車站距離100公尺的dataframe =》 [[66, 164]]
# 範例:# model.predict([[10,100]]))

上課練習範例 結果圖 資料庫 程式碼

 
範例15-3:以『dataframe』格式進行AI房價學習,建立多元線性迴歸模型y=f(x1,x2,x3...),做2個預測(貧民窟附近房價預測,豪宅區附近房價預測)
# 題目:波士頓資料集預測房價,請把資料集分成2種:train拿來學習,test拿來測試與預測 # Boston housing 波士頓,將資料區分為測試和訓練的資料堆,從訓練的資料中定義特徵變數的欄位作為x,房價欄位作為y,找出x和y之間的關係,並把這個關係用測試的資料做驗證,確認我們找出的房子特徵是否能夠準確預測房價。
#重點1:建立多元線性迴歸模型y=f(x1,x2,x3...),sklearn:(3步驟)
#步驟1:先建立數學模型
#import sklearn.linear_model as lm
#model = lm.LinearRegression()

#步驟2:讓模型model學習歷史數據
# 學習指令:model.fit(dataframeX, dataframeY)

#步驟3:進行預測
# 預測指令:model.predict(dataframe)

(1)『機器學習,深度學習』處理的數據,以下3種都可以:
dataframe/series
array(大多數坊間的AI範例都是使用array矩陣)
list

(2)推薦使用的格式:
array矩陣:最常使用**
dataframe/series:也常使用,但是畫殘差圖時則避免使用df
list:無法直接取出欄值,所以不建議使用



影響波士頓房價的13種參數:


預測『貧民窟附近房價,豪宅區附近房價』:


上課練習範例 結果圖2 結果圖3 程式碼

 
範例15-4:以『array矩陣』格式進行AI房價學習,建立多元線性迴歸模型y=f(x1,x2,x3...),做2個預測(貧民窟附近房價預測,豪宅區附近房價預測)

(1)『機器學習,深度學習』處理的數據,以下3種都可以:
dataframe/series
array(大多數坊間的AI範例都是使用array矩陣)
list

(2)推薦使用的格式:
array矩陣:最常使用
dataframe/series:也常使用,但是畫殘差圖時則避免使用df
list:無法直接取出欄值,所以不建議使用



# 21.結論:3種資料格式的轉換:
#(1)『dataframe/series』轉成array矩陣:
import numpy as np
arr_x = np.array(df_x)
取出第6欄位:arr_x[:,5]

#(2)『dataframe/series』轉成list串列:
錯誤做法:list(df)
若是df有欄位,就不能用list(df)轉換
正確做法:df.values.tolist()
取出第6欄位:list無法直接取出欄位,必須先轉成df/array,
例如:arr_x[:,5]

#(3)『array矩陣』轉成dataframe:
import pandas as pd
df_x = pd.DataFrame(arr_x)
df_x = pd.DataFrame(arr_x,columns=[欄位])
取出第6欄位:df_x[:][5]
取出第6欄位:df_x["欄位"]

#(4)『array矩陣』轉成list:
list_x = list(arr_x)
取出第6欄位:list無法直接取出欄位,必須先轉成df/array,
例如:arr_x[:,5]

#(5)『list串列』轉成dataframe:
import pandas as pd
df_x = pd.DataFrame(list_x)
df_x = pd.DataFrame(list_x,columns=[欄位])
取出第6欄位:df_x[:][5]
取出第6欄位:df_x["欄位"]

#(6)『list串列』轉成array矩陣:
import numpy as np
arr_x = np.array(list_x)
取出第6欄位:arr_x[:,5]

影響波士頓房價的13種參數:


預測『貧民窟附近房價,豪宅區附近房價』:


上課練習範例 結果圖2 結果圖3 程式碼

 
範例15-5:以『list串列數組』格式進行AI房價學習,建立多元線性迴歸模型y=f(x1,x2,x3...),做2個預測(貧民窟附近房價預測,豪宅區附近房價預測)

(1)『機器學習,深度學習』處理的數據,以下3種都可以:
dataframe/series
array(大多數坊間的AI範例都是使用array矩陣)
list

(2)推薦使用的格式:
array矩陣:最常使用
dataframe/series:也常使用,但是畫殘差圖時則避免使用df
list:無法直接取出欄值,所以不建議使用


影響波士頓房價的13種參數:


預測『貧民窟附近房價,豪宅區附近房價』:


上課練習範例 結果圖2 結果圖3 程式碼

 
範例15-6:先學習波士頓資料集,然後看13個變數哪些是影響最大的(但要先標準化/正規化後的評估權重才有意義)

(1)如何觀察13個變數df_x的影響權重,看誰的權重大:
權重值就是:w矩陣
數學模型:y= wx + b
w權重值 = w13 = model.coef_

**注意:w13是水平佈置的矩陣 ==> 要轉置矩陣 ==> w13.T**

(2)如何才能把所有的影響因子都標準化/正規化成0~1
計算標準化後的df_x==> df_x2
import sklearn.preprocessing as prep
df_x2 = prep.StandardScaler().fit_transform(df_x)


還沒有標準化/正規化前的13個影響房價參數數據:


還沒有標準化/正規化前的13個影響房價參數的權值值(重要性):


還沒有標準化/正規化前的圖:房間數 vs 房價


還沒有標準化/正規化前的圖:一氧化氮濃度 vs 房價



經過標準化/正規化前的13個影響房價參數(0~1):


經過標準化/正規化前的的13個影響房價參數的權值值(重要性)(0~1):


經過標準化/正規化前的圖:房間數 vs 房價


經過標準化/正規化前的圖:一氧化氮濃度 vs 房價



如果想知道影響參數的權重值,必須經過標準化/正規化步驟(5步驟)

上課練習範例 結果圖1 結果圖2 結果圖3 結果圖4
結果圖5 程式碼

 
範例15-7:波士頓資料集預測房價,把原始資料集分成2類:train拿來學習,test拿來測試與預測
# 題目:波士頓資料集預測房價,請把資料集分成2種:train拿來學習,test拿來測試與預測

# Boston housing 波士頓,將資料區分為測試和訓練的資料堆,從訓練的資料中定義特徵變數的欄位作為x,房價欄位作為y,找出x和y之間的關係,並把這個關係用測試的資料做驗證,確認我們找出的房子特徵是否能夠準確預測房價。
#重點1:建立多元線性迴歸模型y=f(x1,x2,x3...),sklearn:(3步驟)
#步驟1:先建立數學模型
#import sklearn.linear_model as lm
#model = lm.LinearRegression()

#步驟2:讓模型model學習歷史數據
# 學習指令:model.fit(dataframeX, dataframeY)

#步驟3:進行預測
# 預測指令:model.predict(dataframe)
#-----------------------------
#boston資料集檔案:
# import sklearn.datasets as ds
# df = ds.load_boston().data

# 資料集分為訓練train與測試test,train拿來學習,test拿來測試與預測:
模組:sklearn.model_selection
函數:train_test_split()
分割的格式有2種:
(1).dataframe分割格式的計算:train_x,test_x, train_y,test_y = ms.train_test_split(df_x, df_y, test_size=0.33)

(2).array格式的分割計算:train_x,test_x, train_y,test_y = ms.train_test_split(wine.data, wine.target, test_size=0.33)



比較:pred_y預測值 vs test_y測試數據集


上課練習範例 結果圖1 結果圖2 結果圖3 結果圖4
程式碼

 
範例15-8:如何定量評估model模型預測的好壞?有3種定量方法:MSE,R-squared,殘差圖(波士頓資料集預測房價)
# 題目:波士頓資料集預測房價,先把資料集分成2種:train拿來學習,test拿來測試與預測,然後用3種定量方法來評估預測好壞(MSE,R-squared,殘差圖)
#重點1:建立多元線性迴歸模型y=f(x1,x2,x3...),sklearn:(3步驟)
#步驟1:先建立數學模型
import sklearn.linear_model as lm
model = lm.LinearRegression()

#步驟2:讓模型model學習歷史數據
# 學習指令:model.fit(dataframeX, dataframeY)

#步驟3:進行預測
# 預測指令:model.predict(dataframe)

評估模型預測準不準確的方法1,方法2:R2(越大越好),以及MAE(越小越好)



評估模型預測準不準確的方法3,殘差圖(數據越接近y=0紅色線越好)



結論:本AI預測模型,不是很優

原因1:決定係數R2的值不夠高(0.72)

原因2:MAE平均根誤差值,還是太高3.4(要小於0.05才優)

原因3:殘差圖的數據點,不夠接近y=0紅色線,表示有太多殘差

結論:本AI預測模型,不是很優

上課練習範例 結果圖1 結果圖2 程式碼

 
【分類預測】
chp16.建立邏輯斯模型(logistic regression model)來預測二元分類問題
範例16-1:用邏輯斯模型(logistic regression model,羅吉斯)預測分類,預測3種意大利紅酒
# 題目:預測3種意大利紅酒,將資料集分成train,test,先學習再預測,用3種指標來評估預測績效(決定係數R2,MAE,殘差圖)

#重點1:邏輯斯模型的應用性:
#羅吉斯迴歸現在已經被大量使用,因為它非常有效率,也不需要大量運算資源,所以受到廣泛利用。它很容易解讀,不需要調整輸入特徵,也易於正規化,而且它所提供的輸出結果是經過良好校正的預測機率。
#應用1:衛生保健:例如預測受傷患者的死亡率。預測糖尿病和心臟病等疾病的發病率。
#應用2:政治:可用於預測選舉。這些預測是根據年齡、性別、居住地、社會地位、過往投票模式等變數,產生投票結果預測。
#應用3:產品測試:預測測試中系統或產品的成敗。
#應用4:行銷:可用於預測客戶詢價轉化為銷售的機率、訂閱開始或終止的機率,甚至是客戶對新產品系列的潛在興趣。
#應用5:金融業:可預測客戶未來遲繳的可能性,可以看出某位客戶是否會「違約」或「不違約」
#應用6:電子商務:電子商務公司大量投資於跨媒體廣告和促銷活動,很希望了解哪些活動最有效,以及最可能獲得潛在目標受眾響應的選項。此模型集將客戶分類為「反應者」或「非反應者」,所以此模型稱為「反應傾向模型」。

#重點2:邏輯斯模型的預測數字:
#結果:0~1
#判別:0為否,1為是

預測3種意大利紅酒:


影響酒種品質的13種參數:


#重點3:讀取skylearn的dataset,有2種做法:
#(1)方法1:
data, target = ds.load_wine(return_X_y=True)
import sklearn.model_selection as ms
train_x, test_x, train_y, test_y = ms.train_test_split(data, target, test_size=0.2)

#(2)方法2:
wine = ds.load_wine()
import sklearn.model_selection as ms
train_x, test_x, train_y, test_y = ms.train_test_split(wine.data, wine.target, test_size=0.2)

#重點4:建立邏輯斯模型(3步驟)
#1.步驟1:先建立數學模型
import sklearn.linear_model as lm
model = lm.LinearRegression()

#2.步驟2:讓模型model學習歷史數據
model.fit(df_x, df_y)

#3.步驟3:讓模型model進行預測:model.predict(dataframe())
print("預測這個紅酒A的酒種:")
t1 =[[13.53, 3.10, 2.74, 24.5, 96.0, 2.05, 3.76, 0.56, 1.35, 9.20, 0.61, 1.60, 560.0]]
model.predict(t1)[0][0]

print("預測這個紅酒B的酒種:")
t2 =[[13.53, 4.10, 2.74, 24.5, 96.0, 2.05, 0.76, 0.56, 1.35, 9.20, 0.61, 1.60, 560.0]]
model.predict(t2)[0][0]



結論(1):黃酮類化合物,不是影響酒種的關鍵因素

結論(2):脯氨酸,是影響酒種的關鍵因素

上課練習範例 結果圖 結果圖 程式碼

 
【分類預測】
範例16-2:用邏輯斯模型(logistic regression model,羅吉斯)預測分類,評估模型預測的好壞(R2,MAE,殘差圖)
# 題目:預測3種意大利紅酒,將資料集分成train,test,先學習再預測,用3種指標來評估預測績效(決定係數R2,MAE,殘差圖)

#重點1:邏輯斯模型的應用性:
#羅吉斯迴歸現在已經被大量使用,因為它非常有效率,也不需要大量運算資源,所以受到廣泛利用。它很容易解讀,不需要調整輸入特徵,也易於正規化,而且它所提供的輸出結果是經過良好校正的預測機率。
#應用1:衛生保健:例如預測受傷患者的死亡率。預測糖尿病和心臟病等疾病的發病率。
#應用2:政治:可用於預測選舉。這些預測是根據年齡、性別、居住地、社會地位、過往投票模式等變數,產生投票結果預測。
#應用3:產品測試:預測測試中系統或產品的成敗。
#應用4:行銷:可用於預測客戶詢價轉化為銷售的機率、訂閱開始或終止的機率,甚至是客戶對新產品系列的潛在興趣。
#應用5:金融業:可預測客戶未來遲繳的可能性,可以看出某位客戶是否會「違約」或「不違約」
#應用6:電子商務:電子商務公司大量投資於跨媒體廣告和促銷活動,很希望了解哪些活動最有效,以及最可能獲得潛在目標受眾響應的選項。此模型集將客戶分類為「反應者」或「非反應者」,所以此模型稱為「反應傾向模型」。

#重點2:邏輯斯模型的預測數字:
#結果:0~1
#判別:0為否,1為是

#重點5:評估模型績效,方法1:決定係數R2
model.score(test_x, test_y)
# 若r2值越大,就表示模型model越好

#重點6:評估模型績效,方法2:MAE,平均絕對誤差(MAE,Mean Absolute Error)
import sklearn.metrics as mt
mt.mean_absolute_error(test_y, pred_y)
# 若MAE值越小,就表示模型model越好(MAE=0,表示誤差接近於0)

#重點7:評估模型績效,方法3:MAE,平均絕對誤差(MAE,Mean Absolute Error)
# 殘差圖上面的點,越靠近y=0的水平線,就表示模型的預測效果越好(若距離遠的點,表示預測錯誤點)
res_y = pred_y - test_y

(1).用決定係數r2來評估模型model的好壞:




(2).用MAE平均絕對誤差來評估模型model的好壞:



(3).用殘差圖來評估模型model的好壞:


上課練習範例 程式碼

 
範例16-3:使用預測成效報表report的『準確率,精確率,召回率』指標,來評估邏輯斯模型的分類分析效果
#重點2:分析報告的4個指標:準確率,精確率,召回率
(1)accuarcy:整體準確率指標
(2)precision:精確率
(3)recall:召回率recall
(4)f1-score:f-score調和平均參數
(2-1)整體的指標:準確率accuracy:1.0(f1-score) ➜ 100%
舉例:全部36筆資料,預測錯誤8筆,正確28筆,準確率accuracy=28/36 = 0.80

(2-2)看個別類別的指標:➜ 有3種酒品,哪一種的預測最準? ➜ 看精確率precision,召回率recall
定義:
你猜對的準確率 ➜ 精確率precision = 13/15 = 0.8666(你猜有15個,但只對13個)
實際該樣品被猜對的準確率 ➜ 召回率recall = 13/14 = 0.928(實際的樣品Barolo酒有14個,被猜對有13個)
舉例:
實際第0類Barolo酒有14個(test_y),但模型預測是Barolo酒有15個,只有13個猜對
精確率precision = 13/15 = 0.8666(你猜有15個,但只對13個)
召回率recall = 13/14 = 0.928(實際的樣品Barolo酒有14個,被猜對有13個)

(2-3)看個別類別的指標:➜ f-score調和平均參數 ➜ 複合2個參數(精確率precision,與召回率recall)





預測結果:
預測:[2 0 2 2 2 0 1 1 0 1 1 2 0 1 0 1 2 1 1 2 0 0 1 1 2 1 1 1 2 0 1 0 0 2 1 2]
實際:[2 0 2 2 2 0 1 1 0 0 1 2 0 1 0 1 2 1 1 2 0 0 1 1 2 1 1 2 2 0 1 0 0 2 1 2]
測試樣本數=36,發現有2個預測錯誤,準確數34
(1).整體預測效果:
(A).準確率 = accuracy = 34/36 = 0.94444

最上面3列(0,1,2)代表預測target對象(紅酒),有3種(編號0,1,2)
最右邊support(每類紅酒的樣本數,11,13,12,總共36)

(2).看個別酒種的預測效果
例如:編號0紅酒的預測效果
(A).精確率precision = 1 =(你預測是0類紅酒的有10個,你猜中0類紅酒率=1)
(B).召回率recall = 0.91 =(實際是0類紅酒的有10個,1個被猜錯,被猜中率=9/10=0.9)
(C).f1-score = 0.95 = 精確率precision,與召回率recall的『調和平均數』

(3).AI模型預測的4種評估準確率:
(A).準確率accuracy = 全部樣本的『被猜中率』,若為1表示全部被猜中
(B).精確率precision = 你的猜中率(針對某類紅酒)
(C).召回率recall = 某類樣本的『被猜中率』,若為1表示某類全部被猜中
(D).f1-score = 精確率precision,與召回率recall的『調和平均數』

結論:這4個參數,可以看出『主動效果,被動效果』
#被動效果:『某類被猜中率recall
#主動效果:『你針對某類的猜中率precision』


上課練習範例 結果圖 程式碼

 
範例16-4:改善預測的準確率的第1種方法:增加迭代次數
# 題目:增加迭代次數來改善預測3種意大利紅酒的準確率,將資料集分成train,test,先學習再預測,用3種指標來評估預測績效(準確率,精確率,召回率, f-score)

#重點1:建立邏輯斯模型,並讓迭代次數增加(計算的比較多次,讓誤差越來越低)
#增加迭代次數的方法:max_iter=10000
#顯示計算迭代的訊息:verbose=True
#指令:model = lm.LogisticRegression(max_iter=10000, verbose=True)
import sklearn.linear_model as lm
model = lm.LogisticRegression(max_iter=10000, verbose=True)















上課練習範例 程式碼

 
範例16-5:改善預測的準確率的第2種方法:將資料標準化standardization
# 題目:將資料標準化standardization來改善預測3種意大利紅酒的準確率,將資料集分成train,test,先學習再預測,用3種指標來評估預測績效(準確率,精確率,召回率, f-score)

#重點1:將wine.data資料標準化standardization ==> data_std
# 模組:sklearn.preprocessing
# 函數:data_std = prep.StandardScaler().fit_transform(wine.data)
# 範例:
import sklearn.preprocessing as prep
data_std = prep.StandardScaler().fit_transform(wine.data)








上課練習範例 程式碼

 
【二,深度學習,Deep Learning】
【用keras模組預測商業數據】
chp7.建立類神經網絡模型
範例7-1:學習線性趨勢線(直線),預測x=10的y值?
1.從一個範例來認識人工智慧(TensorFlow官網的教學範例1):用1層神經網絡來做迴歸分析
☎人工智慧的最常見用途:分類,迴歸
☎目的:從一堆xy對應數據,找出迴歸線(歸納找出趨勢)
☎參考教學影片:教學影片(中文)
教學影片(英文)
(1)如何找出輸入x,與輸出y的關係(迴歸法,分類法,類神經網路法)


(2)TensorFlow官網的教學文件1:
TensorFlow官網的教學範例1:找出數據的趨勢線

(9-1-1)練習範例(1):學習線性趨勢線(直線),預測x=10的y值?
數據點:
xs = [-1.0, 0.0, 1.0, 2.0, 3.0, 4.0]
ys = [-3.0, -1.0, 1.0, 3.0, 5.0, 7.0]
☎題目:找出這堆數據的迴歸(歸納找出趨勢線):

☎執行類神經網路的求解步驟示意圖:

☎方法:使用神經網絡模型,單層神經,一個神經元units=1
#建立1層神經網絡

上課練習範例 結果圖 程式碼

 
範例7-2:學習線性趨勢線(直線),畫出數據點與預測點
練習範例題目:學習線性趨勢線(直線),畫出數據點與預測點
數據點:
xs = [-1.0, 0.0, 1.0, 2.0, 3.0, 4.0]
ys = [-3.0, -1.0, 1.0, 3.0, 5.0, 7.0]

上課練習範例 結果圖 AI的7步驟流程 程式碼解答

 
範例7-3:學習非線性趨勢線(雙曲線),預測x=1.0的y值,畫出數據點與預測點
練習範例題目:學習非線性趨勢線(雙曲線),預測x=1.0的y值,畫出數據點與預測點
數據點:
xs = [-0.5, -0.44736842, -0.39473684, -0.34210526, -0.28947368, -0.23684211, -0.18421053, -0.13157895, -0.07894737, -0.02631579, 0.02631579, 0.07894737, 0.13157895, 0.18421053, 0.23684211, 0.28947368, 0.34210526, 0.39473684, 0.44736842, 0.5]
ys = [0.24595018, 0.19992016, 0.11848622, 0.09924376, 0.08173275, 0.0596075, 0.02737021, 0.01544445, 0.02764277, 0.00527432,-0.00814974,-0.01725386, 0.0489, 0.02935983, 0.04428556, 0.08552249, 0.12389014, 0.15113714, 0.20734122, 0.23009059]

☎注意:每一層的激勵函數activation="relu"
☎注意:優化函數optimizer = Adam()
☎可以成功執行的神經層(6,4,4,4,1)
☎可以成功執行的神經層(8,4,4,4,1)
☎可以成功執行的神經層(10,8,8,8,1)

上課練習範例 結果圖 AI的7步驟流程 程式碼解答

 
範例7-4:非線性趨勢線(拋物線),預測x=12的y值,畫出數據點與預測點
練習範例題目:學習非線性趨勢線(拋物線),預測x=12的y值,畫出數據點與預測點
數據點:
xs = [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]
ys = [0.105, 0.105, 0.148, 0.210, 0.349, 0.540, 0.840, 1.251, 1.799, 2.483]

☎注意:每一層的激勵函數activation="relu"
☎注意:優化函數optimizer = Adam()
☎可以成功執行的神經層(6,4,4,4,1),epochs=1000
☎可以成功執行的神經層(10,8,8,8,1),epochs=1000
☎可以成功執行的神經層(12,8,8,8,8,8,8,8,1)

上課練習範例 結果圖 AI的7步驟流程 程式碼解答