顯示具有 Jupyter Notebook 標籤的文章。 顯示所有文章
顯示具有 Jupyter Notebook 標籤的文章。 顯示所有文章

2018年8月26日 星期日

Python 排序 (sort)

Python裡的排序有很多方法,在這邊歸納整一下。最基本的就是內建的sort()跟sorted()了。要注意的是兩者不大一樣喔。sort()是當場就直接了斷排序了,會改變本來的資料,sorted()是回傳排序後的資料,不影響舊資料:

numpy裡面也有sort函式,好處是速度快,另外跟sorted()一樣,不會改變原來資料:

如果資料是陣列的話,另一個優點是可指定陣列排列的方向:


2018年8月25日 星期六

Ipython特色與magic command

Ipython是Interactive Python (http://ipython.org )的簡寫,是一個超強的python開發環境,也是交談式控制台,其中大家很喜歡的Jupyter Notebook 或是新版Jupyter Lab粗略來說就是Ipython的網頁版,其中Ipython有不少好用的magic command可以幫助程式的開發,這篇就是簡單的筆記一下Ipython的特色與Ipython裡常用的magic command(魔術命令)。

?  (help)
就是不懂或忘記程式怎使用的求救命令,會顯示指令的docstring。
使用時只要在指令後面加上"?"就可:

自己的function也可以:
是不是超神奇!!
另外外速鍵(Shift + Tab)也是可以的

?? (原始碼)
不多說,就是給你看看原始碼,不過你可能會發現,很多結果跟"?"是一樣的,因為不是Ipython裡寫的。

magic command主要都是肥宅喜歡的符號"%"開頭的。

%time
測量單一行指令的時間
%timeit
重複測量指令的時間 (執行幾次取平均,所以準確率高)

多行的程式可以嗎?
當然可以,就兩個%符號就行"%%" (肥宅們不要太興奮了!!)

Shell命令:
在Ipython中也可以直接執行shell的指令喔,不用視窗一直換來換去的了。
用棒子就可啦: "!"

真是cool!!








2018年6月18日 星期一

Machine Learning: Polynomial Regression 多項式迴歸

線性迴歸(Linear Regression)是機器學習(Machine Learning)中常用且基本的model之一,但Sckit-Learn中線性迴歸不僅僅只是能處理線性資料,也能以簡單的方式以多項式迴歸(Polynomial Regression)對資料做擬合(fitting)。換句話說,也就是不儘是線性函數:
y = ax + b

也能以多項式擬合(fitting):
y = ax + bx^2 + cx^3+ ........

怎麼做呢? 基本上就是山不轉路轉,動不了特徵值,換個x值總可以吧。

來看看實際例子:
先import會用到的module:
其中PolynomialFeatures就是轉換座標的關鍵函式(Polynomial basis functions)。

舉例來說,若我本來輸入的x值是2,4,6,此函式就會幫我們轉成2次、3次等等。
只要利用.fit_transform就可以輕鬆達成!!!

看一下實際例子吧,假如我們有下列的資料:
這一看就明顯不是"線性",反而像正弦之類的函數,我們這邊嚐試利用多項式來解,
利用剛才的工具:

我們調用了sklearn.linear_model的LinearRegression,並用較高階的語法make_pipeline直接把x值轉換與模型建立一次完成了。注意在PolynomialFeatures中,我們使用到六次項(6)。

接著擬合剛建立的模型(poly_model)poly_model.fit(),其中xfit是我們自己建立的x值:
得到yfit後,再畫出本來的資料與得到的model,看來結果還不錯囉!!!

參考資料:https://jakevdp.github.io/PythonDataScienceHandbook/



2018年6月13日 星期三

jupyter lab module不能import的問題

Jupyter Lab是jupyter notebook的新版,但會常碰到一些module沒法成功import的問題。我就碰過幾次了,都會跑出這個結果:

ImportError: cannot import name 'is_list_like'
這邊把解法記下來:


沒法import pandas-datareader
參考stackoverflow


我的方法就是重裝囉:
> pip install git+https://github.com/pydata/pandas-datareader.git


沒法import ipywidgets
參考ipywidgets官網

install the JupyterLab Extension
> jupyter labextension install @jupyter-widgets/jupyterlab-manager

這應該能解決問題囉!!

2018年6月3日 星期日

Python: Numpy介紹

List是Python中常用的資料結構,因Python動態型別的特性,可以建立"異質"的list,例如:

In[1]:  L1 = [2, True, 'a']
           [type(item) for item in L1]
Out[1]: [int, bool, str] 

不過這種"動態"的特性並不是免費的,list中的每一個項目必須包含了資料的型態、大小、參考計數等等額外的資料,所以list的缺乏運算的效率(或者說根本沒法做數學運算),因此若能儲存成同一型態,雖然缺乏型態上的彈性,但卻能大幅增加運算的效率。雖然python提供了標準的array模組,但真的好用且真正多數人使用的是numpy模組。numpy會把陣列中的資料轉成相同的型態,因而提升運算效能:



常用的numpy程式指令:
陣列的串接,可分成水平跟垂直的方式:

陣列的改造,如陣列互換,這個在Machine Learning中常用到,非常重要。

有人喜歡用reshape也可:

陣列分割,np.split()中的second argument是分割的位置:


創建陣列,如.linspace這個在往後繪圖中會常用到:



Universal Function提供了方便的矩陣運算,可以看看下列例子:

numpy內的亂數random也是很常用的,非常非常重要。


random函數其實並不是真的"隨機"取樣,而是偽亂數,就是有亂數的樣子,但實際上是先安排好的,所以其實可以避免每一次取的亂數不同,方法就是利用.RandomState(),argument輸入相同的數字,取得的"亂數"就會相同,可以確保每一次執行都有一樣的結果:

另外也可以使用條件式取得布林陣列(True或是False),並用np.sum()或np.count_nonzero()計算符合運算條件的資料數目,這個在數據的分析上非常有用的。
注意np.sum()可以axis=0 or 1限定以行或列的方向進行運算,另外np.any()、np.all()應該看例子就可以理解用途了。












2018年5月20日 星期日

Jupyter Lab

jupyter notebook利用直譯語言的特性可以即時輸出程式的結果,是很多人愛用的程式語言工具。而現在有更新版本出現囉!!!

jupyter lab是jupyter的新版,特別是針對檔案切換的不便作出改善。如下圖示jupyter lab的操作畫面,可以看到左邊多了檔案目錄的視窗,因此要找或轉換檔案比起jupyter notebook方便得多了。多了這些特性與功能,儼然演化成完整的的IDE了。




安裝jupyter lab很簡單:

>>>conda install -c conda-forge jupyterlab

不過有些套件module可能要重裝(pip or conda)。

執行時只要鍵入:

>>>jupyter lab

將出現下面畫面:




選擇Notebook,就大功告成囉!!!


現在jupyter lab版本仍然還是beta版,應該很快最會推出穩定的1.0版。


參考資料:
https://jupyterlab.readthedocs.io/en/latest/

2018年3月11日 星期日

Tensorflow (Tensorboard)

Tensorboard的使用方式如下:

在jupyter notebook中先運用tensorflow建構一個簡單的tensorflow模型:

之後輸入以下程式碼:
tf.summary.merge_all()
train_writer = tf.summary.FileWrite('你要存的檔案目錄', sess.graph)
就會將所有的tensorflow的資料打包,並存檔。



怎麼打開tensorboard呢?
要先離開jupyter notebook回到cmd,在Tensorflow的Anaconda的虛擬環境之中執行下列命令:

>activate tensorflow

接下來啟動Tensorboard:

>tensorboard --logdir=c:\你剛存檔的目錄

得到如下的畫面:
可以看到紅色框框中有個網址:
這是個人筆電的內部ip
打開慣用瀏覽器,輸入此網址就可以看到tensorboard了



參考資料
TensorFlow+Keras深度學習人工智慧實務應用

2017年12月30日 星期六

改變Jupyter Notebook的預設瀏覽器

Jupyter Notebook是Python語言常用的IDE(Integrated Development Enviroment)
開發與編輯非常方便
不過Jupyter Notebook介面是經由預設的瀏覽器(如:Edge)
如果想使用不一樣的瀏覽器
除了可以經由改變電腦預設的瀏覽器之外
還可以利用下方的方式改變Jupyter Notebook預設的瀏覽器
這邊舉Chrome為例:

打開Anaconda Prompt
輸入以下指令

>jupyter notebook --generate-config

應該會看到以下回應:

Writing default config to C:..................(後面省略)

這個動作會在.jupyter目錄下開啟一個檔案:

jupyter_notebook_config.py

找到這個檔案後使用任一編輯器打開此檔  (看個人習慣,我自己使用的是免費的Notepad++)

此檔案中會看到一堆#開始的程式碼
找到下面一行程式碼

#c.NotebookApp.browser = ''

接著在下方輸入下列的三行程式碼 (注意不需要"#"在前面)

import webbrowser
webbrowser.register('chrome', None, webbrowser.GenericBrowser(u'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'))
c.NotebookApp.browser = 'Chrome'


(注意第二行程式中的路徑跟你當初安裝Chrome的目錄路徑有關)
存檔後,照著一般的方式開啟jupyter notebook
就會從預設的瀏覽器改為從Chrome開啟囉!!!

2017年12月29日 星期五

Jupyter Notebook 與 Spyder

在常見的Python的IDE(Integrated Development Enviroment)
Spyder算是我第一個使用的python編譯器
優點是介面簡潔、乾淨、清楚
還可以看看變數的改變

不過上網爬了許多文章,不少人都推薦Jupyter NoteBook
而且因為我是經由Anaconda安裝Python
兩種編輯介面都一起安裝了
所以某天好奇心驅使下也去試試

使用後發現
Jupyter Notebook最大的優點就是程式碼可以分區執行
對程式的理解很有幫助
確實是很適合初學者(像我自己)使用的IDE
用過就回不去囉!!