Latest Entries »

WordPress 的廣告

最近發現 WordPress 的廣告似乎有點太多了,版面約占越大。

有些廣告看了也令人不太舒服。

似乎是時候改用別的平台了?

廣告

Jupyter notebook 雖然支援 Markdown 各式可以讓文字變成標題或是段落標題,但預設無法看到整個 notebook 的大綱和目錄 (table of content)。

Jupyter notebook extensions 是一些不錯用的 Jupyter 外掛,其中包含顯示大綱 table of content 的功能 toc2 (table of content(2)),對編輯較長的 notebook 時很有用。

table of content (2) extension

安裝 Jupyter notebook extensions 並啟用 toc2 的方法:
1. 開啟一個 Jupyter notebook (或在 Terminal 內也可) ,在 cells 內輸入並執行:

!pip3 install jupyter_contrib_nbextensions
!jupyter contrib nbextension install --user
!jupyter nbextension enable toc2/main

(若是 Terminal 內,則不須輸入開頭的驚嘆號"!")
2. 接著重新整理頁面,就會啟動 toc2 extension

Jupyter notebook extensions 還有其他好用的功能,詳見 https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions.html

若要啟動其餘的 extensions,也可以透過像

!jupyter nbextension enable /main

來啟動。

Reference: https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/toc2/README.html

A/B Test

Resources: Google free course on A/B testing

1. 先確定已安裝 Python 和 Java,若沒有請透過官網的連結下載最新版安裝
2. 在命令提示字元輸入

pip install pyspark

來下載安裝 pyspark
3. 若想要在 Jupyter Notebook 下啟動 pyspark,可以加入下列參數到 Windows 環境變數 (使用者變數或系統變數皆可)

PYSPARK_DRIVER_PYTHON = jupyter
PYSPARK_DRIVER_PYTHON_OPTS = 'notebook'
PYSPARK_PYTHON = python

4. 在命令提示字元輸入 pyspark 即可啟動
但是在 Windows 上還需要手動下載 winutils.exe
5. 到 https://github.com/steveloughran/winutils/ 下載對應版本的 winutils.exe (在 bin 資料夾內)
6. 將 winutils.exe 放到 C:\winutils\bin\ 下
7. 新增 Windows 環境變數: HADOOP_HOME = C:\winutils
接著還會遇到暫存資料夾 tmp\hive 權限的問題
8. 在你要開啟專案的硬碟的根目錄 (如 E:\) 建立資料夾 \tmp\hive
(假如 ipynb 在 E:\abc\def\code.ipynb 內,就建立兩個資料夾在 E:\tmp\hive,一般此資料夾會自動在執行 pyspark 時建立,但權限會有問題,需手動修改)
9. 用 winutils.exe 改變該暫存資料夾的權限

%HADOOP_HOME%\bin\winutils.exe chmod 777 E:\tmp\hive

10. 檢查該資料夾權限

%HADOOP_HOME%\bin\winutils.exe ls E:\tmp\hive

應該要為 drwxrwxrwx

這樣應該就可以正常使用 pyspark 了

Reference: https://blogs.msdn.microsoft.com/arsen/2016/02/09/resolving-spark-1-6-0-java-lang-nullpointerexception-not-found-value-sqlcontext-error-when-running-spark-shell-on-windows-10-64-bit/

Spark 安裝的方法有很多種,在此提供在 mac 上透過 python 的 pip 來安裝單機版的 Spark
此教學安裝的版本: Spark 2.3.1, python 3.6.5 (64 bits), macOS 10.13.5, Java 8.171
下列安裝說明假設你已從 Python 官網下載並裝好 Python 3+ (64 bits),並不需要從 Spark 官網另外下載 Spark 檔案

  1. 先到 Oracle 官網下載安裝 Java
  2. 將新安裝的 Java 加入 PATH 參數:
    a. 用文字編輯器 (如: TextEdit) 打開 .bash_profile 檔,此檔一般隱藏於使用者根目錄 ~ 下方
    b. 在檔案最下方加入:

    # Java 8
    export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
    export PATH=${JAVA_HOME}/bin:$PATH
    

    c. 在 Terminal 中輸入

    java -version

    ,若無錯誤應該會顯示:

    java version "1.8.0_171"
    Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
    Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
    
  3. 在 Terminal 輸入:
    pip install pyspark

    來透過 pip 安裝 pyspark (或是用 pip3,如果你的 pip 不是 python 3 的話),Spark 檔案大小約 200 MB

  4. 安裝完後,在 .bash_profile 最底部再加入
    # pyspark 2.3.1 with Python 3.6
    export SPARK_HOME="/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyspark"
    export PYSPARK_PYTHON=python3
    
  5. 要執行 pyspark 可以在 Terminal 輸入
    pyspark

    來執行。如果沒錯誤就會顯示類似:

    Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 05:52:31) 
    [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    2018-07-05 00:37:21 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    Setting default log level to "WARN".
    To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
    Welcome to
          ____              __
         / __/__  ___ _____/ /__
        _\ \/ _ \/ _ `/ __/  '_/
       /__ / .__/\_,_/_/ /_/\_\   version 2.3.1
          /_/
    
    Using Python version 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018 05:52:31)
    SparkSession available as 'spark'.
    >>>
    
  6. 可以嘗試輸入
    print(sc.version)

    看看 Spark 是否有正確啟動,有看到版本號就是正確啟動了

Pyspark in Jupyter

假如你想用 Jupyter Notebook 來啟動 Pyspark,可以加入下列參數到 .bash_profile

export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

這樣從 Terminal 啟動 pyspark 時就會自動開啟 Jupyter Notebook。

Reference:

Running pyspark after pip install pyspark
Get Started with PySpark and Jupyter Notebook in 3 Minutes

自學 SQL 推薦

快速免費自學 SQL 的網站 http://sqlzoo.net/
上面藉由練習題的方式,讓你快速學會 SQL 基礎的語法
學長說他做完上面的題目和教學,對 Data Scientist 來說就夠了,相當推薦
We will see.

Jupyter notebook 上,當你輸入左括號時,會自動幫你鍵入右括號,但判斷相當不聰明,常常你要打右括號卻會被吃掉。因此我通常都會把自動完成括號的功能關閉。

關閉自動括號完成的方法如下:
1. 打開隨意一個 Jupyter notebook 輸入並執行

from notebook.services.config import ConfigManager
c = ConfigManager()
c.update('notebook', {"CodeCell": {"cm_config": {"autoCloseBrackets": False}}})

2. 重新開啟 Jupyter notebook 即可。

這在 Windows 和 macOS 上都適用

Reference: https://stackoverflow.com/a/42566861/7159229

macOS 上安裝 lightGBM

更新日期: 2018/09/20

首先需要安裝 Homebrew,在 terminal 裡輸入:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

並輸入使用者密碼來安裝。

接著使用 Homebrew 來下載並安裝 cmake 和 OpenMP:

brew install cmake
brew install libomp

注意,Homebrew 所安裝的 gcc 會是最新版的 (2018 年時裝的是 gcc-8)。但是如果直接在 terminal 輸入 gcc 所執行的仍會是 macOS 原本預裝舊版 gcc 4.2.1。若之後要呼叫新版 (例如第8版) 的 gcc 請使用 “gcc-8”。 LightGBM 現在建議用 Apple Clang 來 compile

然後,用 git 下載並編譯 lightGBM。移至使用者的根目錄 ~ 後輸入:

git clone --recursive https://github.com/Microsoft/LightGBM ; cd LightGBM
mkdir build ; cd build
cmake ..
make -j4

如果未來需要更新版本的 gcc,則把指令中的 8 改為新的版本號。

最後安裝 python 端的 lightgbm package:

pip3 install --no-binary :all: lightgbm

然後可以在 python 內執行

import lightgbm

來檢查是否安裝正確

References:
http://lightgbm.readthedocs.io/en/latest/Installation-Guide.html#macos
https://github.com/Microsoft/LightGBM/issues/1369
http://lightgbm.readthedocs.io/en/latest/Python-Intro.html#install
https://github.com/Microsoft/LightGBM/issues/1369

Please do NOT use “Microsoft YaHei" for Traditional Chinese. Please use “Microsoft JhengHei" instead!

微軟為中文開發的新字體有兩個,簡體字市場用的是「微軟雅黑體」,而繁體字市場的是「微軟正黑體」。由於微軟雅黑體內也包含繁體字,因此常常會看到有些系統誤把繁體字用微軟雅黑體顯示 (如:Google Account 頁面)。這常常讓繁體字的畫面看起來很凌亂、很不整齊。

下圖比較同樣的文字,用 微軟正黑體 (上) 和 微軟雅黑體 (下) 來顯示的結果:

可以看出數個問題:

  1. 繁體字在微軟雅黑體中,高度不一致,像是圖中的「資」、「頁」、「管」、「護」、「帳」、「虞」 等字,就比其他字要高。而「您」字則比旁邊要矮。這些字的下緣都沒有跟旁邊切齊。
  2. 微軟雅黑體的繁體字,不是正確的寫法 (以台灣來說),最明顯的是「透」、「過」左邊的辵部在雅黑體中少了一個凹。「過」右上的橫槓應該在右不再左。「及」中間那劃沒有接回、「虞」下面應該是「吳」而不是「口天」。
  3. 微軟雅黑體字體較正黑體為粗,但雅黑體不是每個字的粗細都一致,比例也明顯沒有調整過(縱劃都比橫劃要粗)。

這些問題導致,用微軟雅黑體來顯示繁體字,常會有雜亂的感覺。而會有這些差異,主要的原因應該是「微軟雅黑體」根本就不是特別為繁體字設計的,所以比例和位置都沒有對繁體字調整過。而且有很多字元在簡體字和繁體字的寫法本來就不同,雖然編碼上被當作同一個字元。

因此希望各位網頁設計者不要把微軟雅黑體用來顯示台灣地區的繁體字,感謝!

之前都是用 Chrome 和 Opera 開 Jupyter Notebook,

每次只要 notebook 太長、cell 數太多,瀏覽時就會開始 lag

後來發現 Firefox 沒有這問題,就算開很大的 notebook,瀏覽起來也是非常順暢,

所以之後就都換成用 Firefox 開 Jupyter notebook。

 

不過 Firefox 不是我的預設瀏覽器,所以這裡介紹如何在 Windows 下指定 Jupyter notebook 預設的瀏覽器。

  1. 在命令提示字元輸入
    jupyter notebook --generate-config

    以建立新的 jupyter_notebook_config.py 設定檔

  2. 在執行… (Win + R) 中,執行 .jupyter,以前往 jupyter_notebook_config.py 所在的資料夾,用文字編輯器開啟 jupyter_notebook_config.py
  3. 找到 #c.NotebookApp.browser,把它改成
    firefox_path = 'C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe'
    import webbrowser
    webbrowser.register('firefox', None, 
                        webbrowser.BackgroundBrowser(firefox_path), 1)
    c.NotebookApp.browser = 'firefox'
    

會需要 import webbrowser 是因為 Jupyter 基本上是用 webbrowser.get(‘firefox’).open(URL) 來啟動瀏覽器的,

但新版的 Firefox 不一定有被註冊在 python webbrowser 的資料庫中,所以必須先註冊 Firefox 才行。