Sunday, March 28, 2021

Python 筆記

Python 筆記

2021/02/21


https://pixabay.com/zh/illustrations/tech-circle-technology-abstract-3041437/

-----

Python

https://www.python.org/

PyCharm

https://www.jetbrains.com/pycharm/

一、保留字:Keywords。

https://tw511.com/a/01/3236.html

二、內建函式:Build-in Functions。

https://docs.python.org/3/library/functions.html

三、標準函式庫:Standard Libraries。

https://docs.python.org/3/library/

四、各類函式庫:NumPy、pandas、matplotlib、SciPy、scikit-learn、seaborn。

https://numpy.org/

https://pandas.pydata.org/

https://matplotlib.org/

https://www.scipy.org/

https://scikit-learn.org/stable/

https://seaborn.pydata.org/

五、周邊

https://riverbankcomputing.com/software/pyqt/intro

https://mariadb.org/

六、深度學習框架:Keras、TensorFlow、PyTorch。

https://keras.io/

https://www.tensorflow.org/

https://pytorch.org/

七、實戰:Kaggle。

https://www.kaggle.com/learn/overview

-----

從 Colab 到 Kaggle(目錄)

Colab(七):Python - Tutorials

https://hemingwang.blogspot.com/2021/03/colabpython-tutorials.html

Colab(九。二):TensorFlow - Tutorials

https://hemingwang.blogspot.com/2021/03/colabtensorflow-tutorials.html

Colab(八。三):Keras - Tutorials

https://hemingwang.blogspot.com/2021/03/colabkeras-tutorials.html

-----


https://pixabay.com/zh/photos/flag-wind-patriotism-mast-rod-3283466/

-----

 從 Colab 到 Kaggle(目錄)

2021/03/12

-----

◎ 熱身篇

-----

一、各類視頻

https://hemingwang.blogspot.com/2021/03/python-notebook.html

二、Python(Windows)

https://hemingwang.blogspot.com/2021/03/python-windows.html

三、PyQt(GUI)

http://hemingwang.blogspot.com/2021/03/pyqt.html

四、MariaDB(資料庫)

http://hemingwang.blogspot.com/2021/03/mariadb.html

五、深度學習基礎理論

http://hemingwang.blogspot.com/

-----

Colab(一):啟動

http://hemingwang.blogspot.com/2020/12/colab.html

Colab(二):Jupyter Notebook

http://hemingwang.blogspot.com/2021/03/colabjupyter-notebook.html

Colab(三。一):Python

http://hemingwang.blogspot.com/2021/03/colabpython.html

Colab(四):Data Structure

http://hemingwang.blogspot.com/2021/03/colabdata-structure.html

Colab(五):Module

http://hemingwang.blogspot.com/2021/03/colab-program.html

Colab(六。一):File

http://hemingwang.blogspot.com/2021/03/colab.html

Colab(六。二):Error

Colab(六。三):Class

Colab(六。四):Standard Library I

Colab(六。五):Standard Library II

Colab(六。六):Package

-----

# 擴充功能與機器學習

Colab(七。一):Numpy(Tutorials)

http://hemingwang.blogspot.com/2021/03/colabnumpy.html

Colab(七。二):matplotlib

https://hemingwang.blogspot.com/2021/03/colabmatplotlib.html

Colab(七。三):Pandas

http://hemingwang.blogspot.com/2021/03/colabpandas.html

Colab(七。四):SciPy

Colab(七。五):scikit-learn

Colab(七。六):XGBoost

Colab(七。七):tqdm

-----

# Keras

Colab(八):Keras

https://hemingwang.blogspot.com/2021/03/colabkeras.html

Colab(八。一):Keras - LeNet

http://hemingwang.blogspot.com/2021/03/colablenet.html

Colab(八。二):Keras - DQN

https://hemingwang.blogspot.com/2021/03/colabkeras-dqn.html


# TensorFlow

Colab(九):TensorFlow

https://hemingwang.blogspot.com/2021/03/colabtensorflow.html

Colab(九。一):TensorFlow - LeNet

https://hemingwang.blogspot.com/2021/03/colabtensorflow-lenet.html


# PyTorch

Colab(一0):PyTorch

https://hemingwang.blogspot.com/2021/03/colabpytorch.html

Colab(一0。一):PyTorch - CIFAR10

http://hemingwang.blogspot.com/2021/03/colabpytorch-cifar10.html

Colab(一0。二):PyTorch - Training a Classifier

https://hemingwang.blogspot.com/2021/03/colabpytorch-training-classifier.html

Colab(一0。三):PyTorch - Tutorials

https://hemingwang.blogspot.com/2021/03/colabpytorch-tutorials.html

Colab(一0。四):PyTorch - LeNet(檔案下載有問題)

https://hemingwang.blogspot.com/2021/03/colabpytorch-lenet.html


# GitHub

Colab(一一):GitHub

http://hemingwang.blogspot.com/2020/12/github.html

Colab(一一。一):GitHub - Python - LeNet

http://hemingwang.blogspot.com/2021/03/colabgithub.html


# Kaggle

Colab(一二):Kaggle

https://hemingwang.blogspot.com/2021/03/kaggle.html

Colab(一二。一):Kaggle - Titanic

https://hemingwang.blogspot.com/2021/03/colabkaggle-titanic.html

Colab(一二。二):Kaggle - Bike Sharing

https://hemingwang.blogspot.com/2021/03/colabkaggle-bike-sharing.html

Colab(一二。三):Kaggle - Tutorials

https://hemingwang.blogspot.com/2021/03/colabkaggle-tutorials.html

-----

Colab(七):Python - Tutorials

 Colab(七):Python - Tutorials

2021/03/28

-----


https://pixabay.com/zh/photos/basket-ball-game-equipment-801708/

-----

2021/03/28

95 個超簡單(沒有全對)練習題,完成到 47。List。接下來是 Tuple。

2021/03/28

-----

References

Python Tutorial

https://www.w3schools.com/python/default.asp

-----

Colab(一二。三):Kaggle - Tutorials

 Colab(一二。三):Kaggle - Tutorials

2021/03/28

-----



https://pixabay.com/zh/photos/tutorials-instructions-learn-blog-5238355/

-----

References

Learn Python, Data Viz, Pandas & More | Tutorials | Kaggle

https://www.kaggle.com/learn/overview

-----













Colab(七。一):NumPy

 Colab(七。一):NumPy

2021/03/20

-----


https://pixabay.com/zh/photos/tartan-track-career-athletics-start-2678544/

-----

References


Python Numpy Tutorial (with Jupyter and Colab)

https://cs231n.github.io/python-numpy-tutorial/


NumPy quickstart — NumPy v1.20 Manual

https://numpy.org/doc/stable/user/quickstart.html


NumPy quickstart — NumPy v1.21.dev0 Manual

https://numpy.org/devdocs/user/quickstart.html


Introduction to NumPy

https://www.w3schools.com/python/numpy/numpy_intro.asp


-----


# numpy 簡介

Hello NumPy!. 學習及利用NumPy函式庫的強大功能,理解相關的基礎應用 | by MAPE Academy | Python4U | Medium

https://medium.com/python4u/hello-numpy-b5ebe67a1ada


# numpy array 的手冊

numpy.array — NumPy v1.20 Manual

https://numpy.org/doc/stable/reference/generated/numpy.array.html


# 搜尋 Numpy 資料的過程中,找到這一份文件。文件簡單地解說了 Numpy。比較特別的是,完整的文件,把 Python 跟統計學連結的很仔細。

Chapter 8 Numpy | 經濟數學程式設計專題

https://bookdown.org/tpemartin/bookdown-programming-for-math-economics/numpy.html

-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Friday, March 26, 2021

Python Windows

 Python Windows

2021/03/26

-----


https://pixabay.com/zh/photos/window-old-abandoned-ivy-overgrown-1533513/

-----

References

適用于初學者的 Windows 10 上的 Python | Microsoft Docs

https://docs.microsoft.com/zh-tw/windows/python/beginners

-----

MariaDB

 MariaDB

2021/03/22

-----


https://pixabay.com/zh/photos/church-window-window-church-2217785/

-----

References

-----

◎ 英文

-----

MariaDB Foundation - MariaDB.org

https://mariadb.org/

-----

◎ 繁中

-----

MariaDB - 維基百科,自由的百科全書

https://zh.wikipedia.org/wiki/MariaDB


MariaDB 資料庫是什麼?它跟MySQL有什麼不同?

https://progressbar.tw/posts/273

-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

PyQt

 PyQt

2021/03/22

-----


https://pixabay.com/zh/photos/pink-flowers-pink-flowers-5585152/

-----

References

-----

◎ 英文

-----

PyQt/Tutorials - Python Wiki

https://wiki.python.org/moin/PyQt/Tutorials

-----

◎ 繁中

-----

PyQt - 維基百科,自由的百科全書

https://zh.wikipedia.org/wiki/PyQt


PyQt 入門,用 Python 寫第一支 GUI - zhung

https://zhung.com.tw/article/pyqt%E5%85%A5%E9%96%80%E7%94%A8python%E5%AF%AB%E7%AC%AC%E4%B8%80%E6%94%AFgui/


Python GUI教程(十四):在PyQt5中使用数据库 - 州的先生

https://zmister.com/archives/354.html

-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Colab(一0。三):PyTorch - Tutorials

 Colab(一0。三):PyTorch - Tutorials

2021/03/24

說明:

此處主要用來記錄 PyTorch Tutorials 的學習日期與心得。

-----


https://pixabay.com/zh/photos/compass-newspaper-finance-direction-2779371/

-----

https://pytorch.org/tutorials/beginner/basics/intro.html

2021/03/24

本篇為簡介。建議在雲端用 Colab 或在自己的電腦上執行。我選 Colab。新手可以從 Tensor 開始。非新手可以從 Quickstart 開始(後面還是有 Tensor)。我選 Quickstart。

-----

T1_QUICKSTART

https://pytorch.org/tutorials/beginner/basics/quickstart_tutorial.html

2021/03/24

預設是 CPU,若中途選 GPU,要重新跑一下代碼。有成功跑完。要再仔細研究一下代碼。想了一下,還是先快速整個跑過一遍,再來研究代碼。

2021/03/24

-----

T2_TENSORS

https://pytorch.org/tutorials/beginner/basics/tensorqs_tutorial.html

2021/03/25

https://zhuanlan.zhihu.com/p/48982978

一維張量是向量。二維向量是矩陣。三維張量是立方體,也可說是通道上的特徵圖。

2021/03/25

-----

T3_DATASETS & DATALOADERS

https://pytorch.org/tutorials/beginner/basics/data_tutorial.html

2021/03/25

資料集的下載與使用。

2021/03/25

-----

T4_TRANSFORMS

https://pytorch.org/tutorials/beginner/basics/transforms_tutorial.html

2021/03/26

並沒有明確的實作。無論如何,Transforms 是一個重要的 Class。提供資料擴增的方法。因為真實世界通常資料不足。

2021/03/26

-----

T5_BUILD THE NEURAL NETWORK

https://pytorch.org/tutorials/beginner/basics/buildmodel_tutorial.html

2021/03/26

完整的例子比較有用。這個例子不完整。

2021/03/26

-----

T6_AUTOMATIC DIFFERENTIATION

https://pytorch.org/tutorials/beginner/basics/autogradqs_tutorial.html

2021/03/26

自動微分,唉。

2021/03/26

-----

T7_OPTIMIZING MODEL PARAMETERS

2021/03/27

這個不錯,是一個完整的實作,而且可以自己練習把模型訓練的更好。

https://pytorch.org/tutorials/beginner/basics/optimization_tutorial.html

2021/03/27

-----

T8_SAVE AND LOAD THE MODEL

https://pytorch.org/tutorials/beginner/basics/saveloadrun_tutorial.html

2021/03/27

很重要,但不是一個完整的實作。

2021/03/27

-----

還有更多分類。等 Keras 結束後再過來。

-----

References

Welcome to PyTorch Tutorials — PyTorch Tutorials 1.8.0 documentation

https://pytorch.org/tutorials/

-----

Thursday, March 25, 2021

Colab(一二。二):Kaggle - Bike Sharing

 Colab(一二。二):Kaggle - Bike Sharing

2021/03/25

-----


https://pixabay.com/zh/photos/person-bench-lake-bank-mountains-6076771/

-----

說明:

在鐵達尼號倖存者很快跑完兩個實作後,決定共享單車就是看看就好。統計學的知識是基本的。資料科學,資料前處理的知識,也是必備的。

然後是選模型,設超參數,跑結果。

所以打算接下來找一個以深度學習的比賽,已結束的,正式練功。

-----

References

Bike Sharing Demand | Kaggle

https://www.kaggle.com/c/bike-sharing-demand


End to end Case Study: Bike-sharing demand prediction | by Pawan Reddy Ulindala | Towards Data Science

https://towardsdatascience.com/end-to-end-case-study-bike-sharing-demand-dataset-53201926c8db


Kaggle - Predicting Bike Sharing Demand — Anindya's Blog

https://anindya-saha.github.io/blog/machine-learning-with-python/kaggle-bike-sharing-demand/kaggle-bike-sharing-demand.html


How to finish in the top 10 percentile in Bike Sharing Demand Competition In Kaggle? (part -1) | by Vivekanandan Srinivasan | Analytics Vidhya | Medium

https://medium.com/analytics-vidhya/how-to-finish-top-10-percentile-in-bike-sharing-demand-competition-in-kaggle-part-1-c816ea9c51e1


[資料分析&機器學習] 第4.2講 : Kaggle競賽-共享單車需求預測 (前17%排名) | by Yeh James | JamesLearningNote | Medium

https://medium.com/jameslearningnote/%E8%B3%87%E6%96%99%E5%88%86%E6%9E%90-%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-%E7%AC%AC4-2%E8%AC%9B-%E5%85%B1%E4%BA%AB%E5%96%AE%E8%BB%8A%E9%9C%80%E6%B1%82%E9%A0%90%E6%B8%AC-%E5%89%8D17-%E6%8E%92%E5%90%8D-505ed7100825

-----


Colab(一二。一):Kaggle - Titanic

 Colab(一二。一):Kaggle - Titanic

2021/03/24

-----

說明:

花了一點時間跑一下鐵達尼號倖存者的實作 [1], [2]。[1] 主要會遇到的問題是 Python 舊版的 sorted 在新版時,會遇到 nan 跟 'C' 'Q'  'S' 分屬 float 與 str,因此無法排序。在 [2] 的解決之道是 nan 數量只有 2,直接改成 'S' 即可。

另外 Pandas 的 dataframe 與 Numpy 的 array,是兩個重要的非內建資料型態。

做 [1] 的時候,覺得這是一個很經典的問題,值得多花一點時間。還想要用深度學習做出很棒的結果。不過看了網上的資料,確實深度學習的強項是資料量更大的時候,鐵達尼的資料集說實在不大。

見識到一些前處理要注意的事項。前處理完成後,就是呼叫隨機森林的演算法。演算法當然值得深入研究,不過這就是實作之外的另一個問題了。Pandas 跟 Numpy 是更基本的。

-----


https://pixabay.com/zh/photos/giant-downfall-pleasure-boat-times-510674/

-----

◎ 以下以參考文獻 [1] 的 ipynb 檔作為「鐵達尼號倖存者」練習之用。程式塊的編號會放在問題編號之前。

-----

(in [2]:)問題一:df_train = pd.read_csv('../data/titanic/train.csv')

解答一:自行修改訓練集的路徑。參考 https://newtoypia.blogspot.com/2019/07/colab.html

-----

(in [13] :)問題二:print

解答二:print()

-----

(in [16] :)問題三:embarked_locs = sorted(df_train['Embarked'].unique())

解答三:

暫時使用手動排序。

解答說明:

首先看一下(in[2] :)與(out[4] :)。train 這個 csv 檔變成 df_train 這個 DataFrame 後,有 int64、float64、object 三種 dtypes(data types) [5]。而 object 在 pandas 裡面,代表 string,如果要在機器學習中使用,則要再轉成數值。

-----

(in [19] :)問題四:if len(df_train[df_train['Embarked'].isnull()] > 0):

解答四:if len(df_train[df_train['Embarked'].isnull()]) > 0:

-----

(in [19] :)問題五:nan。

解答五:np.nan。

https://stackoverflow.com/questions/38672695/nan-in-mapper-name-nan-is-not-defined

-----

(in [27] :)問題六:繪圖問題先跳過。

-----

(in [29] :)問題七:繪圖問題先跳過。

-----

(in [40] :)問題八:無法讀檔。

解答八:修改檔案路徑。

-----

(in [41] :)問題九:

(in [37] :)

一樣是問題三跟問題四的問題。

sort

compare

sort 的解法應該是把非 np.nan 的陣列排序,然後加到 np.nan 成為新的陣列,新的結果。

-----

from sklearn import metrics

#from sklearn.cross_validation import train_test_split

from sklearn.model_selection import train_test_split

-----


暫時的結果。

-----

References

[1] Kaggle機器學習競賽:預測泰坦尼克號倖存者

https://nbviewer.jupyter.org/github/donnemartin/data-science-ipython-notebooks/blob/master/kaggle/titanic.ipynb


[2] [資料分析&機器學習] 第4.1講 : Kaggle競賽-鐵達尼號生存預測 (前16%排名) | by Yeh James | JamesLearningNote | Medium

https://medium.com/jameslearningnote/%E8%B3%87%E6%96%99%E5%88%86%E6%9E%90-%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-%E7%AC%AC4-1%E8%AC%9B-kaggle%E7%AB%B6%E8%B3%BD-%E9%90%B5%E9%81%94%E5%B0%BC%E8%99%9F%E7%94%9F%E5%AD%98%E9%A0%90%E6%B8%AC-%E5%89%8D16-%E6%8E%92%E5%90%8D-a8842fea7077


[3] [ Day31] Kaggle的解題挑戰 2018版 - Kaggle實戰 Titanic - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

https://ithelp.ithome.com.tw/articles/10206089


[4] 【機器學習】Hello Kaggle! 機器學習競賽入門 Titanic - Jason Chen's Blog

https://jason-chen-1992.weebly.com/home/hello-kaggle

-----

[5] pandas.read_csv — pandas 1.2.3 documentation

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html


[6] Python sorted() 函数 | 菜鸟教程

https://www.runoob.com/python/python-func-sorted.html

-----

Colab(一二):Kaggle

 Colab(一二):Kaggle

2021/03/12

-----


https://pixabay.com/zh/illustrations/letters-abc-education-kangaroo-427683/

-----

References


// Kaggle Learning Beginner's Guide | Kaggle Learning Basic Tutorial

https://www.zeolearn.com/magazine/using-kaggle-to-guide-your-learning-why-and-how-should-you-start


// 手把手教你用Kaggle开启机器学习之旅(附资源链接) - 知乎

https://zhuanlan.zhihu.com/p/50170090


// Kaggle入门,看这一篇就够了 - 知乎

https://zhuanlan.zhihu.com/p/25686876


// kaggle使用教學

https://www.kaggle.com/qi4589746/kaggle


// Kaggle官网免费课程:从Python到机器学习,4小时学完一门,48小时掌握数据科学

https://mp.weixin.qq.com/s/BUfiUvpk8WwKB5wANB9bRA


// 如何使用 Kaggle 的教學

http://justimchung.blogspot.com/2019/08/kaggle.html

-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Wednesday, March 24, 2021

Colab(一0。四):PyTorch - LeNet

 Colab(一0。四):PyTorch - LeNet

2021/03/23

-----


https://pixabay.com/zh/photos/theatre-dark-spotlight-flashlight-2601686/

-----

References


# PyTorch 使用 LeCun 維護的 MNIST 資料集。

[1] pytorch_quick_start.ipynb - Colaboratory

https://colab.research.google.com/drive/1gCgtlnMPVWY0l1ra8ssS0EzJiWaVR4Pk


# 備用的資料集下載處。

[2] MNIST - 資料集 - 國網中心資料集平台

https://scidm.nchc.org.tw/dataset/mnist


[3] torchvision.datasets — Torchvision master documentation

https://pytorch.org/vision/stable/datasets.html#


[4] torch.utils.data.dataloader — PyTorch 1.8.0 documentation

https://pytorch.org/docs/stable/_modules/torch/utils/data/dataloader.html


-----


# 使用 Kaggle 的 MNIST 資料集

LeNet with Pytorch | Kaggle

https://www.kaggle.com/usingtc/lenet-with-pytorch


-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----


Colab(一0。二):PyTorch - Training a Classifier

 Colab(一0。二):PyTorch - Training a Classifier

2021/03/24

-----

說明:

由於 PyTorch 的 LeNet 範例 [1] 資料庫下載有問題,所以先練習 CIFAR10 [2]。完整的程式本次有跑完,參考附圖。[3] 在執行上有一些問題,可以參考 [2],本文下方有代碼呈現。

若要拷貝程式,可以使用 Tutorial 程式區右上角的拷貝標籤 [3]。

-----


# CIFAR10 影像分類。

-----

注意事項:

程式若出現 bug,可以修改代碼如下。

-----

transform = transforms.Compose(

    [transforms.ToTensor()])


#transform = transforms.Compose(

#    [transforms.ToTensor(),

#     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

-----

References


[1] pytorch_quick_start.ipynb - Colaboratory

https://colab.research.google.com/drive/1gCgtlnMPVWY0l1ra8ssS0EzJiWaVR4Pk


[2] [DAY 05] 從頭訓練大Model?想多了 : Torchvision 簡介 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

https://ithelp.ithome.com.tw/articles/10218698


[3] Training a Classifier — PyTorch Tutorials 1.8.0 documentation

https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html


[4] cifar10_tutorial.ipynb - Colaboratory

https://colab.research.google.com/github/pytorch/tutorials/blob/gh-pages/_downloads/17a7c7cb80916fcdf921097825a0f562/cifar10_tutorial.ipynb

-----

Colab(一0。一):PyTorch - CIFAR10

 Colab(一0。一):PyTorch - CIFAR10

2021/03/23

-----

說明:

由於 PyTorch 的 LeNet 範例 [1],MNIST 下載有問題,因此先練習一下 CIFAR10 [2]。依照鐵人賽作者的代碼逐行輸入,會卡在 transform 這個變數沒有設定的 bug。可以再檢查官方的完整實作即可 [3], [4]。

本實作我只有練習到呈現四張範例圖片為止。

-----


# 實作結果。

-----

注意事項:

程式若出現 bug,可以修改代碼如下。

-----

transform = transforms.Compose(

    [transforms.ToTensor()])


#transform = transforms.Compose(

#    [transforms.ToTensor(),

#     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

-----

References


[1] pytorch_quick_start.ipynb - Colaboratory

https://colab.research.google.com/drive/1gCgtlnMPVWY0l1ra8ssS0EzJiWaVR4Pk


[2] [DAY 05] 從頭訓練大Model?想多了 : Torchvision 簡介 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

https://ithelp.ithome.com.tw/articles/10218698


[3] Training a Classifier — PyTorch Tutorials 1.8.0 documentation

https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html


[4] cifar10_tutorial.ipynb - Colaboratory

https://colab.research.google.com/github/pytorch/tutorials/blob/gh-pages/_downloads/17a7c7cb80916fcdf921097825a0f562/cifar10_tutorial.ipynb

-----

# 很好的教程,有電子書。

[5] PyTorch 学习笔记(三):transforms的二十二个方法_TensorSense的博客-CSDN博客

https://blog.csdn.net/u011995719/article/details/85107009

-----

Colab(一0):PyTorch

 Colab(一0):PyTorch

2021/03/23

-----


https://pixabay.com/zh/photos/fireworks-pyrotechnics-flame-bright-344769/

-----

References


Welcome to PyTorch Tutorials — PyTorch Tutorials 1.8.0 documentation

https://pytorch.org/tutorials/


PyTorch 自定義資料集 (Custom Dataset) - rowan.ts - Medium

https://rowantseng.medium.com/pytorch-%E8%87%AA%E5%AE%9A%E7%BE%A9%E8%B3%87%E6%96%99%E9%9B%86-custom-dataset-7f9958a8ff15


-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Tuesday, March 23, 2021

Colab(九。一):TensorFlow - LeNet

 Colab(九。一):TensorFlow - LeNet

2021/03/23

-----

說明:

這是 Kaggle 提供的 LeNet 範例,最後會輸出提交的結果。

-----


https://pixabay.com/zh/photos/poles-water-rotten-old-motion-1030747/

-----

步驟:


一、將 [1] 的內容移入 Colab。


二、加入以下指令

from google.colab import drive

drive.mount('/content/drive/')

# 點入系統提供的連結之後,登入自己的帳戶,會得到一組授權碼,將授權碼輸入後,即可存取自己的 Google Drive。

!ls '/content/drive/My Drive/'


三、修改輸入與輸出檔案的路徑為:

train = pd.read_csv('/content/drive/My Drive/train.csv')

test = pd.read_csv('/content/drive/My Drive/test.csv')

test.to_csv('/content/drive/My Drive/submit.csv', columns = ["Label"])


四、將原來匯入的 tensorflow 

import tensorflow as tf

改為匯入之前的精簡版本 [2], [3]:

import tensorflow.compat.v1 as tf

tf.disable_v2_behavior() 


五、以上都修改後即可正常執行(執行時會出現警告訊息)。


六、檢查 Google Drive 根目錄是否有 submit.csv 檔。


七、可嘗試 TensorFlow 其他的 LeNet 版本 [4]。

-----

References


[1] LeNet-5 Architecture for MNIST using Tensorflow | Kaggle

https://www.kaggle.com/niranjanjagannath/lenet-5-architecture-for-mnist-using-tensorflow


[2] AttributeError: module 'tensorflow' has no attribute 'placeholder' · Issue #14 · theislab/scgen · GitHub

https://github.com/theislab/scgen/issues/14


[3] python - TensorFlow, "'module' object has no attribute 'placeholder'" - Stack Overflow

https://stackoverflow.com/questions/37383812/tensorflow-module-object-has-no-attribute-placeholder


[4] advanced.ipynb - Colaboratory

https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/quickstart/advanced.ipynb#scrollTo=DUNzJc4jTj6G


-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Colab(九):TensorFlow

 Colab(九):TensorFlow

2021/03/23

-----


https://pixabay.com/zh/photos/waterfall-cliff-stream-river-water-962798/

-----

References


TensorFlow - 維基百科,自由的百科全書

https://zh.wikipedia.org/wiki/TensorFlow


TensorFlow Core

https://www.tensorflow.org/tutorials?hl=zh-tw


-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Monday, March 22, 2021

Colab(一一。一):GitHub - Python - LeNet

 Colab(一一。一):GitHub - Python - LeNet

2021/03/09

-----

施工中。。。

-----

目標:可以使用 Colab 執行一個 LeNet - Python 的 GitHub 專案。

目標完成日。

-----


https://pixabay.com/zh/photos/way-communication-travel-2826934/

-----

References


# Colab中運行.py文件

// Colab初探 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

https://ithelp.ithome.com.tw/articles/10227517


// 2.多个py文件的使用技巧

// Google Colaboratory中有多个py文件时的使用技巧_daniellibin的博客-CSDN博客

https://blog.csdn.net/daniellibin/article/details/102766088


// Running Python code in Colab · AI_GC_Methodology_2018_v1(private)

https://mmchiou.gitbooks.io/ai_gc_methodology_2018_v1-private/content/colab/running-python-code-in-colab.html


// 使用谷歌Colab Notebooks,這6個小技巧你需要掌握 - 知乎_osc_izh4pvr9 - MdEditor

https://www.mdeditor.tw/pl/gvuJ/zh-tw


The Star Also Rises: LeNet Lab(目錄)

https://hemingwang.blogspot.com/2019/04/lenet-lab.html


-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Colab(一一):GitHub

Colab(一一):GitHub

2020/12/27

-----


https://pixabay.com/zh/photos/code-javascript-html-programmer-5290465/

-----


References



# wiki
GitHub - Wikipedia
https://en.wikipedia.org/wiki/GitHub 


# GitHub 
The world’s leading software development platform · GitHub
https://github.com/ 


# documentation
GitHub Guides
https://guides.github.com/


# 2.6K claps 
GIT Good  A Practical Introduction to GIT and GitHub (Hello GitHub)
https://codeburst.io/git-good-part-a-e0d826286a2a 


# 2.3K claps 
Getting started with Git and GitHub  the complete beginner’s guide
https://towardsdatascience.com/getting-started-with-git-and-github-6fcd0f2d4ac6


# 623 claps
A full tutorial on how to use GitHub - George Seif - Medium
https://medium.com/@george.seif94/a-full-tutorial-on-how-to-use-github-88466bac7d42 


# 348 claps 
What is Git  An overview of Git and why you should use it
https://levelup.gitconnected.com/what-is-git-how-to-use-it-why-to-use-it-explained-in-depth-76a5066abaaa


-----


# wiki
GitHub - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/GitHub 


#
Git 與 Github 版本控制基本指令與操作入門教學 _ TechBridge 技術共筆部落格
https://blog.techbridge.cc/2018/01/17/learning-programming-and-coding-with-python-git-and-github-tutorial/


# 鐵人賽
Learn-Git-in-30-days_README.md at master · doggy8088_Learn-Git-in-30-days · GitHub
https://github.com/doggy8088/Learn-Git-in-30-days/blob/master/zh-tw/README.md 


# Gist
在Medium中使用 GitHub Gist 貼原始碼 - Hong Kong Open Source - Medium
https://medium.com/hong-kong-open-source/%E5%9C%A8medium%E4%B8%AD%E4%BD%BF%E7%94%A8-github-gist-%E8%B2%BC%E5%8E%9F%E5%A7%8B%E7%A2%BC-f8de4493ddb


-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Colab(八。一):Keras - LeNet

 Colab(八。一):LeNet - Keras

2021/03/09

-----

說明:

在 Colab 上,執行 LeNet 的 Keras 版本。

-----


https://pixabay.com/zh/photos/spider-webs-hoarfrost-frozen-cold-4675638/

-----

步驟:

共有六個步驟。


步驟一、啟動 Colab,打開一個新的筆記本 [1]。

步驟二、根據 [2] 的指示,到 Kaggle 下載(可用 Google 帳號登入)訓練集以及測試集的 zip 檔(train.csv 與 test.csv),解壓縮後,將 train.csv 與 test.csv 兩個 csv 檔放到 Google Drive 網路硬碟的根目錄。

步驟三、將 [2] 的 lenet_5.py 的內容搬到 Colab 的筆記本上。有三個地方需要修改。1. 要 mount Google Drive [3]。2. 要修改檔案路徑 [3]。3. 要修改 Pandas 的指令。


1. 新增下列指令

from google.colab import drive

drive.mount('/content/drive/')

# 點入系統提供的連結之後,登入自己的帳戶,會得到一組授權碼,將授權碼輸入後,即可存取自己的 Google Drive。

!ls '/content/drive/My Drive/' 


2. 原程式的 10 跟 11 行(列)

train = pd.read_csv('train.csv')

test = pd.read_csv('test.csv')

改為

train = pd.read_csv('/content/drive/My Drive/train.csv')

test = pd.read_csv('/content/drive/My Drive/test.csv')


3. 原程式的 19 行(列)

sample = sample.reshape([28,28])

改為

sample = sample.values.reshape([28,28])


步驟四、修改完畢後,執行(程式區左上角的三角形)即可看到 LeNet 訓練與執行的結果。

-----


# 實作結果。

-----

步驟五、Runtine、Change runtime type、Hardware accelerator、GPU。選擇 GPU 加速,再看一次結果。

-----

六、超參數調整


epochs = 42


act = 'relu'

act = 'sigmoid'

opt = 'adam'

opt = 'sgd'


1. relu + adam

2. relu + sgd

3. sigmoid + adam

4. sigmoid + sgd


四個組合在 epoch 10 與 epoch 42 的正確率。

1. 收斂極快,極高。0.96。0.99。

2. 收斂較快,較低。0.64。0.93。

3. 收斂較慢,較高。0.61。0.95。

4. 無法收斂。0.10。0.11。

-----

References

[1] 歡迎使用 Colaboratory - Colaboratory

https://colab.research.google.com/


[2] GitHub - TaavishThaman/LeNet-5-with-Keras: Implementation of LeNet-5 with keras

https://github.com/TaavishThaman/LeNet-5-with-Keras


[3] 玩具烏托邦: 貴哥的 colab 初學筆記

https://newtoypia.blogspot.com/2019/07/colab.html


[4] pandas.Series.reshape — pandas 0.19.0 documentation

https://pandas.pydata.org/pandas-docs/version/0.19.0/generated/pandas.Series.reshape.html


-----


# 使用 TPU 的 Keras LeNet

[5] Keras Fashion MNIST - Colaboratory

https://colab.research.google.com/github/tensorflow/tpu/blob/master/tools/colab/fashion_mnist.ipynb


LeNet-5 CNN with Keras - 99.48% | Kaggle

https://www.kaggle.com/curiousprogrammer/lenet-5-cnn-with-keras-99-48


-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Colab(八。二):Keras - DQN

 Colab(八。二):Keras - DQN

2021/03/22

-----


https://pixabay.com/zh/photos/alphabetic-character-alphabet-letters-2538818/

-----

References


[1] Deep Q-Learning with Keras and Gym · Keon's Blog

https://keon.github.io/deep-q-learning/


[2] deep-q-learning/dqn.py at master · keon/deep-q-learning · GitHub

https://github.com/keon/deep-q-learning/blob/master/dqn.py


-----


# 可執行,但這是 Q-learning 非 DQN。只能參考。

[3] Lab 15. 在OpenAI上實作Q-Learning.ipynb 的副本 - Colaboratory

https://colab.research.google.com/drive/16XhWYnVH8ipSlYVaIRLLHZ2QjXjWGQz0#scrollTo=9riuZbu0FRoz


# DQN,可執行,但很慢,換 GPU 也無效。只能參考。

[4] Keras深度强化学习-- Policy Network与DQN实现 - 简书

https://www.jianshu.com/p/e037d42ab6b1


# DQN,可執行。但看起來不容易成功達到山頂。可將 SARS 變數列出就知道了。

[5] Reinforcement Learning w/ Keras + OpenAI: DQNs | by Yash Patel | Towards Data Science

https://towardsdatascience.com/reinforcement-learning-w-keras-openai-dqns-1eed3a5338c


-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Colab(八):Keras

 Colab(八):Keras

2021/03/16

-----


https://pixabay.com/zh/photos/mammal-mouflon-sheep-nature-3024471/

-----

References


Keras: the Python deep learning API

https://keras.io/


主页 - Keras 中文文档

https://keras.io/zh/


keras实现常用深度学习模型LeNet,AlexNet,ZFNet,VGGNet,GoogleNet,Resnet_wmy199216的博客-CSDN博客

https://blog.csdn.net/wmy199216/article/details/71171401


GitHub - erhwenkuo/deep-learning-with-keras-notebooks: Jupyter notebooks for using & learning Keras

https://github.com/erhwenkuo/deep-learning-with-keras-notebooks

-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Colab(七。三):Pandas

 Colab(七。三):PandasPandas

2021/03/21

-----


https://pixabay.com/zh/photos/panda-panda-bear-sleep-rest-relax-1236875/

-----

References


pandas documentation — pandas 1.2.3 documentation

https://pandas.pydata.org/docs/index.html


pandas.DataFrame.iloc — pandas 1.2.3 documentation

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.iloc.html


Reshaping and pivot tables — pandas 1.2.3 documentation

https://pandas.pydata.org/docs/user_guide/reshaping.html

-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Colab(七。二):matplotlib

 Colab(七。二):matplotlib

2021/03/22

-----


https://pixabay.com/zh/photos/spices-condiment-aroma-taste-spicy-667116/

-----

References


Matplotlib: Python plotting — Matplotlib 3.3.4 documentation

https://matplotlib.org/


Hello Matplotlib!. 認識Matplotlib的架構及基礎知識,並且了解如何利用數據來創建圖形並進而客… | by MAPE Academy | Python4U | Medium

https://medium.com/python4u/hello-matplotlib-8ffe04355ebf


用 Python 自學資料科學與機器學習入門實戰:Matplotlib 基礎入門

https://blog.techbridge.cc/2018/05/11/python-data-science-and-machine-learning-matplotlib-tutorial/

-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Sunday, March 21, 2021

Colab(六):File

 Colab(六):File

2021/03/04

-----

施工中。。。最後剩下的 Tutorial 都放在這裡。

-----

目標:可以使用 Colab 存取雲端硬碟的檔案。

目標達成日:

-----


https://pixabay.com/zh/photos/microscope-research-lab-laboratory-385364/

-----

沒有特別針對 Google Drive 的檔案教材。

mount 之後,預設目錄為 Google Drive 的根目錄。

-----

References


[1] Google Colaboratory–適合Python初學者的雲端開發環境

http://www.cc.ntu.edu.tw/chinese/epaper/0052/20200320_5207.html


[2] 玩具烏托邦: 貴哥的 colab 初學筆記

https://newtoypia.blogspot.com/2019/07/colab.html


-----


[3] python 檔案讀寫. 檔案讀寫是很基本又很常用的功能,但由於我每次要用時都還是會估狗一下,因此還是寫下… | by CW Lin | Medium

https://peaceful0907.medium.com/python-%E6%AA%94%E6%A1%88%E8%AE%80%E5%AF%AB-ef0faf9dae1e


[4] Python常見的檔案處理應用

https://www.learncodewithmike.com/2020/02/python-files.html


[5] Python 第 13 章    檔案

http://yltang.net/tutorial/python/13/


[6] Python 好用模組 - pathlib | My.APOLLO

https://myapollo.com.tw/zh-tw/python-pathlib/


-----


Python 初學第十二講—檔案處理. 利用程式進行讀/寫檔案的處理 | by Yu-Hsuan Chou | ccClub | Medium

https://medium.com/ccclub/ccclub-python-for-beginners-tutorial-bf0648108581


[Python初學起步走-Day29] - 檔案讀寫 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

https://ithelp.ithome.com.tw/articles/10161708


Python 讀取 txt 文字檔,一篇搞懂! | ShengYu Talk

https://shengyu7697.github.io/blog/2019/10/19/Python-read-text-file/

-----

補充:

7. Input and Output — Python 3.9.2 documentation

https://docs.python.org/3/tutorial/inputoutput.html


8. Errors and Exceptions — Python 3.9.2 documentation

https://docs.python.org/3/tutorial/errors.html


9. Classes — Python 3.9.2 documentation

https://docs.python.org/3/tutorial/classes.html


10. Brief Tour of the Standard Library — Python 3.9.2 documentation

https://docs.python.org/3/tutorial/stdlib.html


11. Brief Tour of the Standard Library — Part II — Python 3.9.2 documentation

https://docs.python.org/3/tutorial/stdlib2.html


12. Virtual Environments and Packages — Python 3.9.2 documentation

https://docs.python.org/3/tutorial/venv.html


13. What Now? — Python 3.9.2 documentation

https://docs.python.org/3/tutorial/whatnow.html


14. Interactive Input Editing and History Substitution — Python 3.9.2 documentation

https://docs.python.org/3/tutorial/interactive.html


15. Floating Point Arithmetic: Issues and Limitations — Python 3.9.2 documentation

https://docs.python.org/3/tutorial/floatingpoint.html


16. Appendix — Python 3.9.2 documentation

https://docs.python.org/3/tutorial/appendix.html

-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Colab(五):Module

 Colab(五):Module

2021/03/09

-----


https://pixabay.com/zh/photos/work-typing-computer-notebook-731198/

-----

◎ class and object

-----

先定義 class,再用 class 產生一個一個的 object。

-----

◎ function and method

-----

def 是 function。

class 裡面的 def 是 method。

-----

前幾篇文章,練習了邏輯、迴圈、資料結構。

一開始使用 Colab 的時候,不大習慣,因為那些範例都是片段的程式,而且沒有行號。後來找了一下資料,才知道行號的設定 [1]。但是後來也就習慣沒有行號的方式了。

不過一般 Python 的 package,為了結構化的呈現,會有好幾個 .py 的檔案,每個檔案再由 class 與 def 展開 [3]。

-----

◎ 實作:

-----

一、10 自訂函數 [2]。

二、Class [3]。

三、第 15 章    物件與類別 [4]。

四、Modules  [5]。

-----

誤:

class Animal():

 def __init__(self, name):

  self.name = name

 def who(self):

  return self.name

a = Animal(dog)

print a.who #-> dog

正:

class Animal():

 def __init__(self, name):

  self.name = name

 def who(self):

  return self.name

a = Animal("dog")

print(a.who()) 

-----

誤:

acct1 = Account(‘123–456–789’, ‘Justin’) #開一個帳戶

acct1.deposit(100)

acct1.withdraw(30)

print(acct1.balance) #餘額是 70

正:

acct1 = Account('123–456–789', 'Justin') #開一個帳戶

acct1.deposit(100)

acct1.withdraw(30)

print(acct1.balance) #餘額是 70

-----

References

[1] 如何在Google Colaboratory中显示行号? - Thinbug

https://www.thinbug.com/q/49182502


[2] 10 自訂函數

https://bookdown.org/tonykuoyj/hello-py/functions.html


[3] 關於Python的類別(Class)...基本篇. 我覺得Class是Python速成班最重要的一環… | by 張凱喬 | Medium

https://weilihmen.medium.com/%E9%97%9C%E6%96%BCpython%E7%9A%84%E9%A1%9E%E5%88%A5-class-%E5%9F%BA%E6%9C%AC%E7%AF%87-5468812c58f2


[4] 第 15 章    物件與類別

http://yltang.net/tutorial/python/15/

-----

補充:

[5] 6. Modules — Python 3.9.2 documentation

https://docs.python.org/3/tutorial/modules.html

# 解析Python模組(Module)和套件(Package)的概念

https://www.learncodewithmike.com/2020/01/python-module-and-package.html

-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Colab(四):Data Structure

 Colab(四):Data Structure

2021/03/10

-----


https://pixabay.com/zh/photos/stones-wall-quarry-stone-texture-770264/

-----

一、為什麼要學資料結構。

-----

「演算法 + 資料結構 = 程式」[1] 是 Pascal 的發明人 Niklaus Wirth 的名言,以及名著 [2]。這句話可以進一步推廣,「基因演算法 + 資料結構 = 遺傳程式」 [3]。演算法影響解決問題的大方向,資料結構決定了實作這個程式的難易度 [4]。所以,不管你是不是要用 Python 學習演算法與資料結構,你既然決定了用 Python 寫程式,自然要知道 Python 上面有什麼資料結構可以使用 [5], [6]。

-----

二、Built-in Data Structures。

-----

Python 內建的四種資料結構是 list、tuple [7] 與 set、dict [8]。dict 可以多練習一下 [9]。


◎ List

可以用 help(list) 看看總共有有哪些 method。

List 有許多函式可以處理,比剛剛的實作 [7] 細緻一點 [10]。程式碼要稍微品味一下。List 可以用中括號建立(my_list = [] #create empty list)。內容可以是整數、實數、邏輯值,或字串(my_list = [1, 2, 3, 'example', 3.132] #creating list with data)。

建立資料後,可以再新增資料(使用 append()、extend()、insert())。append() 用於新增單一筆資料(my_list.append([555, 12]) #add as a single element)。extend() 用於新增多筆資料(my_list.append([555, 12]) #add as a single element)。insert() 用於在某個位置插入一筆資料(my_list.insert(1, 'insert_example') #add element i)。以上三個函式,都是附屬於 list 的 method,而非內建函式。

刪除資料可以用 del 這個保留字,也可以用 remove、pop、clear 這三個 list 內建的 method。


◎ Dictionary

dict 用大括號建立(my_dict = {'First':'Python','Second':'Java'})。一樣,可以用 help(dict) 看一下有哪些運算或動作可以使用。


◎ Tuple

tuple 使用小括號。tuple 跟 list 很像,但是 list 裡面的值可以修改,tuple 裡面的值不能修改。但是 tuple 的元素還是可以新增(my_tuple = my_tuple + (4, 5, 6) #add elements)。總之,如果元素不打算修改,可以使用 tuple,效能較佳。tuple  也可以是巢狀(多維的)。


◎ Sets

set 跟 dict 有點像,也是使用大括號建立。一樣都不能有重複的元素,也可以說重複的元素無效。其中一個重點是,dict 的元素是 key-value,用冒號連結 key 跟 value。set,既然是 set,自然可以進行 set 的運算,如交集、聯集、相減等等。運算可以用函式,或者用比較簡潔的符號。

-----

三、User-Defined Data Structures

-----


◎ Arrays vs. List

由於 array 不是 Python 內建的資料結構,而是使用者自訂。有兩個方法可以使用 array,用 import as 或者 from import。

第一種方法:

import array as arr

第二種方法:

from array import *

使用第二種方法之後,就可以用 help(array) 檢查有哪些 method 可以使用了。array 跟 list 最大的差別,是 array 裡面的元素,型別都相同。


◎ Stack

◎ Queue

Stack 堆疊是 FILO 先進後出。Queue 列隊是 FIFO 先進先出。Stack 跟 Queue(>>> from collections import deque)可以使用 list 實現 [11]。


◎ Trees

◎ Linked Lists

◎ Graphs

◎ HashMaps

其他資料結構請自行參考 [10]。

-----

◎ 實作練習

-----

一、6 資料容器一 [7]。

二、8 資料容器二 [8]。

三、字典. Dictionary,另一個存資料的好方法 [9]。

四、Data Structures in Python | List, Tuple, Dict, Sets, Stack, Queue | Edureka [10]。

五、Data Structures — Python 3.9.2 documentation [11]。

-----

誤:

starrings = {

    "Rachel Green": "Jennifer Aniston",

    "Monica Geller": "Courteney Cox",

    "Phoebe Buffay": "Lisa Kudrow",

    "Joey Tribbiani": "Matt LeBlanc",

    "Chandler Bing": "Matthew Perry",

    "Ross Geller": "David Schwimmer"

}

for starring in starrings:

    print starring

正:

starrings = {

    "Rachel Green": "Jennifer Aniston",

    "Monica Geller": "Courteney Cox",

    "Phoebe Buffay": "Lisa Kudrow",

    "Joey Tribbiani": "Matt LeBlanc",

    "Chandler Bing": "Matthew Perry",

    "Ross Geller": "David Schwimmer"

}

for starring in starrings:

    print(starring)

-----

誤:

starrings = {

    "Rachel Green": "Jennifer Aniston",

    "Monica Geller": "Courteney Cox",

    "Phoebe Buffay": "Lisa Kudrow",

    "Joey Tribbiani": "Matt LeBlanc",

    "Chandler Bing": "Matthew Perry",

    "Ross Geller": "David Schwimmer"

}

for starring in starrings.keys():

    print starring

正:

starrings = {

    "Rachel Green": "Jennifer Aniston",

    "Monica Geller": "Courteney Cox",

    "Phoebe Buffay": "Lisa Kudrow",

    "Joey Tribbiani": "Matt LeBlanc",

    "Chandler Bing": "Matthew Perry",

    "Ross Geller": "David Schwimmer"

}

for starring in starrings.keys():

    print(starring)

-----

誤:

for starring in starrings.values():

    print starring

正:

for starring in starrings.values():

    print(starring)

-----

誤:

my_squares = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

for i in my_squares:

print(“Key is”, i, “Value is”, my_squares[i])

正:

my_squares = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

for i in my_squares:

    print("Key is", i, "Value is", my_squares[i])

-----

References

[1] Algorithms & data structures

Wirth, Niklaus. Algorithms & data structures. Prentice-Hall, Inc., 1985.


[2] TWIDEEM CIVS

https://twideem.github.io/pages/overcast/20140306A.html


[3] Genetic algorithms + data structures= evolution programs

Michalewicz, Zbigniew. Genetic algorithms + data structures= evolution programs. Springer Science & Business Media, 2013.


[4] 演算法+資料結構=程式 | iThome

https://www.ithome.com.tw/voice/142263


[5] 技術雜談:為什麼要 (或不要) 用 Python 實作資料結構和演算法 | Michael Chen 的技術文件

https://michaelchen.tech/blog/why-or-why-not-using-python-for-algorithms/


[6] 輕鬆學習 Python:資料結構. 利用資料結構儲存多筆資料 | by Yao-Jen Kuo | 數據交點 | Medium

https://medium.com/datainpoint/python-essentials-data-structures-4ba25f2deaf5

-----

[7] 6 資料容器一

https://bookdown.org/tonykuoyj/hello-py/containers-1.html


[8] 8 資料容器二

https://bookdown.org/tonykuoyj/hello-py/containers-2.html


[9] Python 初學第九講 — 字典. Dictionary,另一個存資料的好方法 | by 陳子晴 | ccClub | Medium

https://medium.com/ccclub/ccclub-python-for-beginners-tutorial-533b8d8d96f3


[10] Data Structures in Python | List, Tuple, Dict, Sets, Stack, Queue | Edureka

https://www.edureka.co/blog/data-structures-in-python/

-----

補充:

[11] 5. Data Structures — Python 3.9.2 documentation

https://docs.python.org/3/tutorial/datastructures.html

-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----

Colab(三):Python

 Colab(三):Python

2021/03/09

前言:

本文簡單介紹了 Python 的由來、特性、發展。並提供想要進一步深入的參考資料。

-----

Summary:

Python 的原意是蟒蛇,但 Python 這個語言則是來自一個叫 Monty Python 的團體 [1] - [3]。Python 是直譯式、膠合、物件導向的語言,結合以上三個特性,使 Python 成為同時受初學者與專家歡迎的語言 [4] - [7]。Python 有豐富的內建與外部擴充的函式庫,可用於統計、影像處理、機器學習、深度學習等 [8] - [12]。本文另外提供一些網路上的文章與電子書作為進階的參考 [13] - [15]。

-----


https://pixabay.com/zh/photos/snake-python-serpent-scales-543243/

-----

一、Python 命名的由來。

-----

Python 在希臘神話中,是一隻被 Apollo 太陽神殺掉的巨蟒。英式發音讀為「派森」,美式發音讀為「派三」。如果你對哈利波特第一集還有印象,哈利在他的表弟生日時,到動物園參觀,就跟裡面的一隻 python 對話過。國人常用的是美式發音,但由於 Python 這一詞來自 BBC,所以應該就還是讀為「派森」比較適合。

Python 的命名,來自「Monty Python's Flying Circus」,這是一系列英國 BBC 的超現實主義電視喜劇,不是馬戲團。據說「Monty」這個名字是 Monty Python 為了諷刺二戰英雄蒙哥馬利將軍(Field Marshal Lord Montgomery)。他們想要為這個名字找聽起來比較滑稽的姓,所以選了「Python」[2]。

Python 的創始人 Guido van Rossum 說:「 I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python's Flying Circus).」[2], [3]。我選 Python 作為專案的工作名稱,是因為當時有點想要搞笑(而且我是《蒙提· 派森的飛行馬戲團》的頭號粉絲)。

以上就是 Python 之所以為 Python 的簡短歷史。

-----

二、Python 的特性。

-----

Python 有幾個基本特性,它是直譯式語言、膠合語言、以及物件導向語言。

直譯式語言一行一行執行,有錯誤可以立刻發現,立刻改正,有助於初學者上手。膠合語言是因為 Python 在設計之初,就定位為協助程式設計師過來管理電腦系統,所以容易整合各種不同語言的程式與設定 [4]。

另外 Python 跟 C++、Java 一樣,都是物件導向的語言,而非像 C 一樣,是程序導向的語言。物件導向有封裝、繼承、多型等種種好的性質。

以上三個特性,使得 Python 廣受初學者與專家的歡迎,為 Python 開發的函式庫也越來越多,是一個正向的循環,所以 Python 的使用者也越來越多 [5] - [7]。

-----

三、Python 的保留字。

-----

在 Python 的環境下,執行以下兩行指令,

import keyword

keyword.kwlist

可以得到目前版本的保留字。

['False',  'None',  'True',  'and',  'as',  'assert',  'async',  'await',  'break',  'class',  'continue',  'def',  'del',  'elif',  'else',  'except',  'finally',  'for',  'from',  'global',  'if',  'import',  'in',  'is',  'lambda',  'nonlocal',  'not',  'or',  'pass',  'raise',  'return',  'try',  'while',  'with',  'yield'] [8]。

保留字是程式語言中最基本的部分,以下簡單分類,作為參考。

函式:def、class、return、yield、lambda、from、import。

變數:global、nonlocal、as、del。

邏輯:False、None、True、and、not、or、in、is、assert。

分支:if、else、elif。

迴圈:for、while、continue、break。

除錯:try、except、finally、raise。

其他:async、await、pass、with。


函式:一個程式,由一堆函式所組成,如果只有一個函式,那這個程式就是主函式 main。一個函式,要呼叫,或使用其他函式,可以透過 import 與 from。一個函式,則從 def 開始,到 return 或 yield 結束。class 裡面的 del,叫做 method。

變數:函式裡面主要處理資料,最簡單的資料型態是變數,變數可以是 global 或 nonlocal。如果沒有特別聲明,則是 local。

邏輯:邏輯值是運算的結果,也可以是變數。

分支:如果沒有分支,則函式內部是一條一條代碼,或者說是一個一個指令,循序執行。

迴圈:如果有一段程式會重複幾次執行,可以使用迴圈。

除錯:同字面上的意義,就是可以幫忙除錯。

其他:不在上面的功能,歸於其他。


程式的分解,就如同上面所述,你只要把程式要做的事,分解成上面的指令即可。

-----

四、庫。

-----

庫,指的是一堆函式的集合。

除了 35 個保留字之外,Python 還有 69 個內建函式,是函式庫中最常用的 [9],繼續延伸,則是標準的函式庫 [10]。

外部擴充的話,除了最受歡迎的 NumPy [11]、SciPy,還有機器學習的函式庫 Scikit-learn。它需要 Python (>= 2.7 or >= 3.3)、NumPy (>= 1.8.2)、SciPy (>= 0.13.3) 。MILK、Ramp、Bob 則是另外的機器學習的函式庫 [12]。

跟 SciPy 不同,Scipy packages 包含 Numpy、SciPy、Matplotlib、IPython、Sympy、Pandas。Matplotlib 用於繪圖,Pandas 用於資料庫。

深度學習有 Keras、TensorFlow、PyTorch、Caffe2、Chainer、Theano、PyBrain、Hebel。NTLK、Gensim 可用於 NLP。

以上是一些常見的內建、內部、與外部的函式庫。可以用 !pip list 觀察 Colab 已經預裝了哪些函式庫。

-----

五、深入 Python。

-----

網路上有豐富的 Python 資源,這裡簡單列出五十篇文章 [13]、一本免費下載的電子書(我有下載)[14]、15 本免費下載的電子書(我沒有下載)[15],作為繼續深入的參考。

-----

◎ 實作練習

-----

4 基本資料類型 [16]。

5 流程控制 [17]。

7 For 迴圈 [18]。

9 while 迴圈 [19]。

-----

誤:

lucky_number = input("請輸入你的幸運數字:")

print("我的幸運數字是 {}.format(lucky_number)")

正:

lucky_number = input("請輸入你的幸運數字:")

print("我的幸運數字是 {}.".format(lucky_number))

-----

誤:

starrings = ["Jennifer Aniston", "Courteney Cox", "Lisa Kudrow", "Matt LeBlanc", "Matthew Perry", "David Schwimmer"]

for starring in starrings:

    print starring

正:

starrings = ["Jennifer Aniston", "Courteney Cox", "Lisa Kudrow", "Matt LeBlanc", "Matthew Perry", "David Schwimmer"]

for starring in starrings:

    print(starring)

-----

誤:

starrings = ["Jennifer Aniston", "Courteney Cox", "Lisa Kudrow", "Matt LeBlanc", "Matthew Perry", "David Schwimmer"]

for i in range(len(starrings)):

    print starrings[i]

正:

starrings = ["Jennifer Aniston", "Courteney Cox", "Lisa Kudrow", "Matt LeBlanc", "Matthew Perry", "David Schwimmer"]

for i in range(len(starrings)):

    print(starrings[i])

-----

誤:

starrings = ["Jennifer Aniston", "Courteney Cox", "Lisa Kudrow", "Matt LeBlanc", "Matthew Perry", "David Schwimmer"]

i = 0

while i < 6:

    print starrings[i]

    i += 1

正:

starrings = ["Jennifer Aniston", "Courteney Cox", "Lisa Kudrow", "Matt LeBlanc", "Matthew Perry", "David Schwimmer"]

i = 0

while i < 6:

    print(starrings[i])

    i += 1

-----

誤:

from random import choice


coin_flips = [] # 建立一個空的清單放置每一次投擲的結果

coin = ["Head", "Tail"]


while coin_flips.count("Head") < 3:

    coin_flips.append(choice(coin))


print coin_flips # 印出每次投擲的紀錄

print len(coin_flips) # 總共投擲了幾次

正:

from random import choice


coin_flips = [] # 建立一個空的清單放置每一次投擲的結果

coin = ["Head", "Tail"]


while coin_flips.count("Head") < 3:

    coin_flips.append(choice(coin))


print(coin_flips) # 印出每次投擲的紀錄

print(len(coin_flips)) # 總共投擲了幾次

-----

References

[1] Monty Python and Robin Hood | Fafner's 遁世居

https://fafner-hideaway.blogspot.com/2010/05/monty-python-and-robin-hood.html


[2] Python 不是大蟒蛇、Java 就是一杯咖啡,程式語言都是如何命名的? | TechOrange

https://buzzorange.com/techorange/2016/03/14/how-do-you-name-your-language/


[3] Foreword for "Programming Python" (1st ed.) | Python.org

https://www.python.org/doc/essays/foreword/

-----

[4] 什麼是Python - Python

https://nkust.gitbook.io/python/


[5] Hello Python!|Python入門詳細介紹. 完整的Python介紹與使用,對想進入Python及Data… | by MAPE Academy | Python4U | Medium

https://medium.com/python4u/hello-python-509eabe5f5b1


[6] 一小時Python入門-part 1 - 寫點科普 Kopuchat

https://kopu.chat/2017/01/18/%E4%B8%80%E5%B0%8F%E6%99%82python%E5%85%A5%E9%96%80-part-1/


[7] 一小時Python入門-part 2 - 寫點科普 Kopuchat

https://kopu.chat/2017/01/18/%E4%B8%80%E5%B0%8F%E6%99%82python%E5%85%A5%E9%96%80-part-2/

-----

[8] Python保留字(關鍵字)一覽表 - tw511教學網

https://tw511.com/a/01/3236.html


[9] Built-in Functions — Python 3.9.2 documentation

https://docs.python.org/3/library/functions.html


[10] The Python Standard Library — Python 3.9.2 documentation

https://docs.python.org/3/library/


[11] 認識 Python 科學運算套件. 與 NumPy 初次見面 | by Yao-Jen Kuo | Pyradise | Medium

https://medium.com/pyradise/%E8%AA%8D%E8%AD%98-python-%E7%A7%91%E5%AD%B8%E9%81%8B%E7%AE%97%E5%A5%97%E4%BB%B6-c4e59f1d8ecc


[12] 34 Open-Source Python Libraries You Should Know About

https://www.mygreatlearning.com/blog/open-source-python-libraries/

-----

[13] Learn Python from Top 50 Articles for the Past Year (v.2019) | by Mybridge | Mybridge for Professionals

https://medium.mybridge.co/learn-python-from-top-50-articles-for-the-past-year-v-2019-3225f4643d9c


[14] Free Python Programming Book

https://books.goalkicker.com/PythonBook/


[15] 15 Free eBooks to Learn Python. Want to learn Python but can’t be… | by Brandon Morelli | codeburst

https://codeburst.io/15-free-ebooks-to-learn-python-c299943f9f2c


[16] 4 基本資料類型

https://bookdown.org/tonykuoyj/hello-py/section-4.html


[17] 5 流程控制

https://bookdown.org/tonykuoyj/hello-py/ifelse.html


[18] 7 For 迴圈

https://bookdown.org/tonykuoyj/hello-py/for-loop.html


[19] 9 while 迴圈

https://bookdown.org/tonykuoyj/hello-py/while-loop.html

-----

補充:

[20] 3. An Informal Introduction to Python — Python 3.9.2 documentation

https://docs.python.org/3/tutorial/introduction.html


[21] 4. More Control Flow Tools — Python 3.9.2 documentation

https://docs.python.org/3/tutorial/controlflow.html

-----

# Python 程式設計

http://yltang.net/tutorial/python/0/


Python Documentation contents — Python 3.9.2 documentation

https://docs.python.org/3/contents.html


Python - 維基百科,自由的百科全書

https://zh.wikipedia.org/wiki/Python


Python (programming language) - Wikipedia

https://en.wikipedia.org/wiki/Python_(programming_language)


# 日文

Python - Wikipedia

https://ja.wikipedia.org/wiki/Python


# 韓文

파이썬 - 위키백과, 우리 모두의 백과사전

https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%8D%AC


Welcome to Python.org

https://www.python.org/

-----

從 Colab 到 Kaggle(目錄)

https://hemingwang.blogspot.com/2021/03/colab_12.html

-----