conda命令是管理在安裝不同package時的主要介面,使用conda時,你可以進行建立(create)、輸出(export)、列表(list)、移除(remove)和更新(update)環境於不同Python版本及Packages,同時也可以分享你的虛擬環境。

conda –V

conda update conda  

conda env list     -  看目前系統已經安裝幾個虛擬環境

conda create --name myenv python=3.7 - 建立一個叫做myenv的虛擬環境,並且是安裝python 3.7的版本  

source activate myenv  - 啟動一個新的虛擬環境

conda list - 虛擬環境中已經先安裝了那些東西

conda install -c conda-forge dash  -在虛擬環境中安裝Dash 套件

pip freeze > requirements.txt 

gcloud app deploy app.yaml -開始安裝google App Engine

pip install --upgrade pip -在過程中有錯誤需要uppdate pip 

pip install gunicorn -在過程中有錯誤需要安裝 gunicorn

再次執行gcloud app deploy app.yaml

gcloud app browse - 需要一段時間才會成功,成功後執行這指令
 

To view your application in the web browser run: $ gcloud app browse
(myenv) kktxt1103@host1:~/Dash$ gcloud app browse
Did not detect your browser. Go to this link to view your app:https://analytical-poet-25330门-6.appspot.com

source deactivate  -離開虛擬環境

conda remove --name myenv numpy  - 刪除虛擬環境或package

conda env remove --name myenv  - 刪除整個虛擬環境

整個程式如下,需要三個檔案, requirments.txt 利用pip產生的

(myenv) kktxt1103@host1:~/Dash$ ls -lt
total 16
-rw-rw-r-- 1 kktxt1103 kktxt1103 636 Sep 24 06:24 main.py
-rw-rw-r-- 1 kktxt1103 kktxt1103 330 Sep 24 06:16 requirements.txt
-rw-rw-r-- 1 kktxt1103 kktxt1103 107 Sep 23 11:50 app.yaml

#-------------------------------------------------------
(myenv) kktxt1103@host1:~/Dash$ more app.yaml
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:server
runtime_config: 
   python_version: 3
#---------------------------------------------------------
(myenv) kktxt1103@host1:~/Dash$ more main.py
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
server = app.server
colors = {
    'background': '#111111',
    'text': '#7FDBFF'
}
#---------------------------------------------------------
(myenv) kktxt1103@host1:~/Dash$ more requirements.txt
certifi==2019.9.11
Click==7.0
dash==1.3.0
dash-core-components==1.2.0
dash-html-components==1.0.1
dash-renderer==1.1.0
dash-table==4.3.0
Flask==1.1.1
Flask-Compress==1.4.0
future==0.17.1
gunicorn==19.9.0
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
plotly==4.1.1
PyYAML==5.1.2
retrying==1.3.3
six==1.12.0
Werkzeug==0.16.0

 

 

 

 

 

 

 

stanley 發表在 痞客邦 留言(0) 人氣()

這篇文章在GCP中建立miniconda 

(1) Installing miniconda

First, we start and connect to VM instance via ssh 連線下的 查看gclound 指令

再執行下面的指令

  • bzip2 , to install Mini/Anaconda
  • libxml2-dev, to install further Python libraries
$ sudo apt-get update
$ sudo apt-get install bzip2 libxml2-dev$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ bash Miniconda3-latest-Linux-x86_64.sh
$ rm Miniconda3-latest-Linux-x86_64.sh
$ source .bashrc
$ conda install scikit-learn pandas jupyter ipython 

再檢查版本

$ python --version
$ which python
$ which conda
$ conda list conda$

結果如下:

再檢查目前己安裝之套件

$ conda list

 

 

 

stanley 發表在 痞客邦 留言(0) 人氣()

 

資料來源:  https://kylinyu.win/sre-workshop1-gcp-vm-server/

https://cloud.google.com/compute/docs/tutorials/basic-webserver-apache?hl=zh-tw

(1) Connect to VM 

$ sudo apt-get install apache2 
$ sudo service apache2 restart

sudo apt-get upgrade

https 要改成http 
您正嘗試以 https 位址存取 VM。請確認您的網址是 http://[EXTERNAL_IP] 而非 https://[EXTERNAL_IP]

(2)

stanley 發表在 痞客邦 留言(0) 人氣()

資料來源:  https://blog.uccloud.com.tw/2018/10/28/%E9%83%A8%E7%BD%B2-django-2-%E8%87%B3-app-engine-2nd-%E6%A8%99%E6%BA%96%E7%92%B0%E5%A2%83%E6%95%99%E5%AD%B8/

https://cloud.google.com/python/django/?hl=zh-tw (官方網站)

Django 是知名的 python 網站應用程式框架,功能完整、社群活耀、提供開發者良好的基石,知名的應用程式如:Instagrm、Spotify、Youtube、Dropbox 都採用 Python + Django。

透過 Google Cloud Platform 託管 Django 的方法可分為:VM(虛擬主機)、Container(容器)、Serverless(無伺服器),本篇教學是 Serverless,使用最新的 App Engine 第二代標準環境,把所有主機維運的重擔全部交給 Google。開發與部署都在 Cloud Shell 中完成,只需瀏覽器就可以學習,也適合想學習 Django 成為後端軟體工程師的人。

Google App Engine 是 Google Cloud Serverless 雲端服務,讓開發者專注程式而非維運主機,共有三種環境:標準環境(第一代、第二代)與彈性環境。最新的第二代標準環境是具有容器特性的沙盒,融合第一代標準環境與彈性環境的優點:

  1. 開發者可以用慣用的 python 開發程序。
  2. 幾乎瞬間的擴展以應付瞬間的大流量,彈性環境則適合流量平穩的網站。
  3. 每日免費額度,流量不大幾乎不用錢。
  4. 自訂網址和免費代管的 SSL 憑證提供 HTTPS 連線。
  5. 檔案系統與網路存取等,詳情:https://cloud.google.com/appengine/docs/standard/appengine-generation

另外,第一代標準環境支援 python 2.7,僅適用 Django 1.11。第二代標準環境支援 pyhton 3.7,可以使用最新的 Django 版本(本文撰寫時為 2.1.2 版)。
 

區域選擇

同時考慮 App Engine 與 第二代 Cloud SQL 支援的區域,本篇選擇 asia-east2 (香港)。

為了降低延遲,建議 App Engine 與 Cloud SQL 選同一區域,以下是服務支援區域查詢網址:
App Engine:https://cloud.google.com/appengine/docs/locations
Cloud SQL:https://cloud.google.com/sql/docs/mysql/locations

開始前,建立一個全新專案並啟動 Cloud Shell

建立 MySQL 資料庫

我們使用 MySQL 作為本範例的資料庫後端。在 Cloud SQL 建立一個 MySQL 實例,命名為 django,在 Cloud Shell 下輸入:

gcloud sql instances create django \
     --activation-policy=ALWAYS \
     --region=asia-east2 \
     --tier=db-n1-standard-1

測試用途可以改用 db-f1-micro 或 db-g1-small 取代 db-n1-standard-1 以減少支出,正式環境則不建議。接著建立資料庫,命名為 djangodb

$ gcloud sql databases create djangodb --instance django

設定 root 密碼:

$ gcloud sql users set-password root \
     --host=% \
     --instance django \
     --password=p@ssw0rd # 請修改為自己的密碼

為開發環境準備 Cloud SQL Proxy

為了要在 Cloud Shell 中連線到上述建立的 MySQL 資料庫,Google 提供一個 Cloud SQL Proxy 程式提供簡單而且安全的連線方式。

首先,新增一個連線階段分頁:

add_session
開啟一個新的連線階段分頁

下載 cloud_sql_proxy 程式:

$ wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
$ chmod +x cloud_sql_proxy

之後啟動指如下:(請修改 YOUR_PROJECT_ID 為您的專案ID)

$ cloud_sql_proxy -instances=YOUR_PROJECT_ID:asia-east2:django=tcp:3306

出現 Ready for new connections 提示則代表已準備就緒。讓這個分頁保持開啟,回到原本的連現階段分頁,繼續接下來的教學。

詳細 Cloud SQL Proxy 請參考此說明頁面:https://cloud.google.com/sql/docs/mysql/sql-proxy

建立 App Engine 服務

為專案啟用 App Engine 服務,只能執行一次,區域必須慎選,無法再修改。建議要與資料庫同一個區域以降低延遲。

$ gcloud app create --region=asia-east2

建立 pyhton 虛擬環境

建立虛擬環境,指定 pyhton3,目錄命名為 django2-gae2

$ virtualenv -p python3 django2-gae2

啟動虛擬環境,並且在這個環境中安裝 Django 與 PyMySQL 套件

$ source django2-gae2/bin/activate
(django2-gae2) $ pip install Django
(django2-gae2) $ pip install PyMySQL

確認 Django 模組已經安裝正確版本

(django2-gae2) $ python -m django --version
2.1.2

開始建立 Django 專案

使用 django-admin 指令建立一個全新 Django 專案,命名為 mysite,並切換到專案目錄

(django2-gae2) $ django-admin startproject mysite
(django2-gae2) $ cd mysite
(django2-gae2) ~/mysite $

接下來,需要建立與修改檔案,可用你熟悉 vim 等文字編輯指令,或更簡單的方法是透過  Cloud Shell 提供的線上編輯器:

code editor
開啟文字編輯器

Cloud Shell  Editor.png

在專案目錄下建立一個 app.yaml 檔,內容為:

runtime: python37

handlers:
- url: /static
  static_dir: static/

- url: /.*
  script: auto

針對 Python 3.7 的 app.yaml 設定參考頁面: https://cloud.google.com/appengine/docs/standard/python3/config/appref

在專案目錄下建立一個 main.py 檔,內容為:

from mysite.wsgi import application
app = application

App Engine 預設會搜尋根目錄下的 main.py 檔案中的 app 變數,視為 WSGI 相容物件,也就 Django 網站程式的介面。

修改 Django 專案設定檔 mysite/settings.py

# 安全提醒!App Engine 有足夠的安全可以這樣設定,如果採用別的環境請謹慎設定。
ALLOWED_HOSTS = ['*']
 .
 .
 .
# 註解原本 DATABASES 定義
# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }
import pymysql
pymysql.install_as_MySQLdb()
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'djangodb',
        'USER': 'root',
        'PASSWORD': 'p@ssw0rd', #修改為您的密碼
        'PORT': '3306',
    }
}
DATABASES['default']['HOST'] = '/cloudsql/YOUR_PROJECT_ID:asia-east2:django'
if os.getenv('GAE_APPLICATION', None):
    pass
else:
    # 開發環境中透過 Cloud SQL Proxy 連線到資料庫
    DATABASES['default']['HOST'] = '127.0.0.1'
 .
 .
 .
# 加入這個變數,指定靜態媒體檔目錄
STATIC_ROOT = 'static'

執行到這,專案的檔案目錄結構會像這樣:

mysite/
    app.yaml
    main.py
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

再下幾個指令就完成了,初始化資料庫:

(django2-gae2) ~/mysite $ python manage.py makemigrations
(django2-gae2) ~/mysite $ python manage.py migrate
在第一個步驟發生mysqlclient 版本過舊的問題
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
但更新mysqlclient時仍會出現錯誤 
解決方式: (1)sudo apt-get install libmysqlclient-dev
         (2)sudo apt-get install python-dev
         (3)pip install mysqlclient  

 

 

你可以在 Cloud SQL Proxy 分頁看到有新的連線進來的提示訊息

資料庫管理是 Django 一大重點,開發者只需要定義 Model,其他就交給 Django。如果Model 有變動,例如:字串長度增加或增加一個屬性,Django 都會自動幫你『遷移』。

建立 Djanog admin 第一個管理員:

(django2-gae2) ~/mysite $ python manage.py createsuperuser

蒐集靜態媒體檔案到 ‘static’ 這個目錄:

(django2-gae2) ~/mysite $ python manage.py collectstatic

這個指令會參考上述 settings.py 中的 STATIC_ROOT 的值,同時 app.yaml 也指定 /static 對應的靜態檔案目錄,讓 App Engine 來服務靜態檔案。

啟動開發伺服器

(django2-gae2) ~/mysite $ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
October 27, 2018 - 17:07:02
Django version 2.1.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/ #點擊此連結瀏覽開發網站
Quit the server with CONTROL-C.

開啟頁面後會看到預設的 Django 頁面,Django Admin 網址在 /admin/ 這個路徑下登入。如果你是 Django 的新手,接下來可以按照官方教學完成經典的 Polls 投票 app:https://docs.djangoproject.com/en/2.1/intro/tutorial01/#creating-the-polls-app

部署應用程式

(django2-gae2) ~/mysite $ pip freeze > requirements.txt
(django2-gae2) ~/mysite $ gcloud app deploy

如果一切順利,你的網站就在這個網址中運作 https://YOUR_PROJECT_ID.appspot.com。

結語

本編教學展示了以慣用的 python 開發程序部署 Django 到 App Engine 第二代標準環境。Serverless 雲端服務、功能完整的 Django 框架和豐富的 python 套件成為支撐您的應用程式的強大基石。

 

stanley 發表在 痞客邦 留言(0) 人氣()

股票基本常識

股票市場

  • 初級市場:又稱「發行市場」,資金需求者(包括政府單位、金融機構及公民營企業)為籌集資金,出售有價證券給最初購買者之發行市場
  • 次級市場:又稱「流通市場」,是初級市場發行後之有價證券買賣的交易市場。我們平常所看到的股價與交易資訊大多來自次級市場

交易所

在台灣處理股票的單位叫做「台灣證券交易所」股份有限公司,成立為1961年10月3日。

  • 交易時間:星期一到星期五的 09:00 ~ 13:30。
    • 休假停市日除經過特別公告外,與金融業的例行假日相同
    • 台北市宣布停止上班上課時,則台灣証券交易所休市

市場概況

資料來源1
台灣證券交易所
證券櫃買賣中心 - 上櫃
證券櫃買賣中心 - 興櫃

公開發行公司 上市公司 上櫃公司 興櫃公司
數量 920 763 257
市值 285,972.81(億元) 2,607,551(佰萬) 510,665(佰萬)

股票的歷史資料

用套件抓取某個股票的歷史資料時,格式通常會如下

日期 最高價High 最低價Low 開盤價Open 收盤價Close 成交量Volume 調整後收盤價Adj Close
2015-01-05 140.5 137.5 140.5 139.5 32046000.0 121.474525

股票的價格取決於競標的形式。
開盤價:指的是9點開盤之前,把每一個股票買賣當量做統計所訂出的價格。
收盤價:股票收盤之前,把每一個股票買賣當量做統計所訂出的價格。
日報酬率:把前一天的收盤價和今天的收盤價做比較。

關於投資幾個數學常識

  1. 關於收益率
    假設你投資現金有10萬,第一個月收益100%,資金到達20萬,但第二個月損失50%,資金卻會跌回10萬
    結論是虧損比賺錢容易
  2. 關於漲跌停
    假設你股票有10萬,有以下兩種情況
    (1). 第一天漲10%,第二天跌10%。
    (2). 第一天跌10%,第二天漲10%,不管是哪一種資金最後都是9.9萬。
    結論是漲跌不管前後餘額都一樣
  3. 關於波動性
    假設你股票有10萬,第一年賺40%,第二年賠20%,第三年賺30%,第四年賠20%,第五年賺50,第六年賠20%
    波動性大的股票,年報酬率有時候還會輸績優股
    4. 每天只賺1%
    假設你股票有50萬,每天只賺1%,一年會有250個交易日
    就算每次報酬只有1%,但只要穩定投資,也可以成長為大資本
    5.投資組合
    假設你股票有100萬,投資以下組合 無風險資產A(每年5%),高風險資產B(每年-20%~40%),投資80萬到A,20萬到B
    最好的年報酬率可以到0.12,最差就攤平,這就是保本基金CPPI技術的雛形。
    6. 關於做空
    做空最大的收益率就是100%,前提是這支股票下市,但做多的收益率是沒有上限的,因此不要永遠的做空。除非你不相信人類社會會前進。
    7.K線圖:
    根據股價一天走勢的 4 個價位:開盤價、收盤價、最高價、最低價繪製而成。開盤價與收盤價,會構成 K 線的實體(Body),最高價、最低價分別成為上影線(Shadow)及下影線。如果收盤價高於開盤價,Body 為紅色;收盤價低於開盤價,Body 為黑色或是綠色。
    8. 股票殖利率
    股票殖利率=現金股利÷股價

    股票殖利率的公式有沒有覺得似曾相似?對,就是和我們常見的「投資報酬率」雷同!
    投資報酬率公式如下:
    投資報酬率=獲利÷本金
    再白話一點的解釋,股票殖利率就是:你買這檔股票,會得到多少%的股息。

    那麼,股價每天都在變動,要以那一天的股價來計算呢? 

    一、若你已經買股票了,要計算自己的殖利率,

    當然是用你買進時的股價來計算。

    二、若你還沒買股票,想知道過去每年的殖利率,

    一般是用除息前一天的收盤價來計算。

     

    下面以2015年現金股利殖利率排名前三名的總太(3056),範例說明殖利率的算法。

     

總太(3056)
2015年的現金股利除息日 2016/06/30
2015年的現金股利 2.5元
我於2016/06/02買入價 15.50元
除息前一天(2016/06/29)的收盤價 17.35元

 

若在2016/06/02以15.50元購入1股總太,

殖利率=2.5元÷15.50元=16.13%

 

若未買入,則以除息前一天的收盤價來計算,

殖利率=2.5元÷17.35元=14.41%

 

股票分析的過程

使用python來分析真實世界的財經資料

  1. 股票的資料:通常是csv檔案
  2. 資料的分析:統計模型
  3. 視覺化資料:將資料轉換成圖表

個抓取股票的套件,有兩個套件可以取得歷史資料。之後還要找抓取綜合損益表和資產負債表的文章。

  1. twstock      (請參考twstock 文件系統)
  2. pandas-datareade
  3. Ta-lib:python套件,專門用來計算金融技術指標。
  4.  

 

認識 BestFourPoint
BestFourPoint 四大買賣點判斷來自 toomore/grs 之中的一個功能, 透過四大買賣點來判斷是否要買賣股票。四個買賣點分別為:
量大收紅 / 量大收黑
量縮價不跌 / 量縮價跌
三日均價由下往上 / 三日均價由上往下
三日均價大於六日均價 / 三日均價小於六日均價

參考資料: 
使用 Python 資料分析和視覺化上市櫃公司薪資公開資料
財報分析入門筆記
文藝型開發者

 

 

 

stanley 發表在 痞客邦 留言(0) 人氣()

我的需求及目標如下
(1)Python爬蟲程式環境及上傳程式
(2)在GCP執行Python爬蟲程式
(3)設定自動排程每日執行

 

使用爬蟲程式注意事項

1. 進行網絡抓取時請仔細閱讀數據合法使用聲明。通常情況下,您抓取的數據不能商用。
2. 您的程序不要過於頻繁的向網站發出數據請求(也被稱為垃圾請求),這種做法可能會使網站列為黑名
    單。 所以對一個網站每數秒後才進行一次數據更新是比較好的做法,我們要使程式的行為與人類的行為相
    似。
3. 網站佈局時間會變化,所以要時常重新訪問網站,如果需要的話,先檢查網站更新時間。

(1)Python爬蟲程式環境及上傳程式
      sudo pip install BeautifulSoup4
       用pip list 確定版本及套件

(2)  上傳python 程式, py 格式要用UFT-8

(3) 撰寫擷取 yahoo 頭條新聞簡單程式

import requests
from bs4 import BeautifulSoup

# 下載 Yahoo 首頁內容
r = requests.get('https://tw.yahoo.com/')

# 確認是否下載成功
if r.status_code == requests.codes.ok:
  # 以 BeautifulSoup 解析 HTML 程式碼
  soup = BeautifulSoup(r.text, 'html.parser')

  # 以 CSS 的 class 抓出各類頭條新聞
  stories = soup.find_all('a', class_='story-title')
  for s in stories:
    # 新聞標題
    print("標題:" + s.text)
    # 新聞網址
    print("網址:" + s.get('href'))

 

(4) 程式結果:

 

(5)在GCP上設定Crontab自動排程Python程式

  • 輸入crontab -l 可以查看目前有在GCP排程的程式
  • 輸入crontab -r 可以刪除所有在GCP排程的程式
  • 輸入crontab -e 可以編輯目前正在GCP上排程的P程式
代表意義 分鐘 小時 日期 月份 指令
數字範圍 0-59 0-23 1-31 1-12 0-7 指令

 

特殊字符 代表意義
*(星號) 代表任何時刻都接受的意思!舉例來說,範例一內那個日、月、週都是 * , 就代表著『不論何月、何日的禮拜幾的 12:00 都執行後續指令』的意思!
,(逗號) 代表分隔時段的意思。舉例來說,如果要下達的工作是 3:00 與 6:00 時,就會是:
0 3,6 * * * command
時間參數還是有五欄,不過第二欄是 3,6 ,代表 3 與 6 都適用!
-(減號) 代表一段時間範圍內,舉例來說, 8 點到 12 點之間的每小時的 20 分都進行一項工作:
20 8-12 * * * command
仔細看到第二欄變成 8-12 喔!代表 8,9,10,11,12 都適用的意思!
/n(斜線) 那個 n 代表數字,亦即是『每隔 n 單位間隔』的意思,例如每五分鐘進行一次,則:
*/5 * * * * command
很簡單吧!用 * 與 /5 來搭配,也可以寫成 0-59/5 ,相同意思!

stanley 發表在 痞客邦 留言(0) 人氣()

完整官方文件 https://cloud.google.com/python/setup?hl=zh-tw
 

目標(針對Linux)

  • 安裝 Python 2 和 3 的最新版本。
  • 安裝並使用 virtualenv
  • 安裝編輯器 (選用)。
  • 安裝 Cloud SDK (選用)。
  • 安裝 Python 適用的 Cloud 用戶端程式庫 (選用)。
  • 安裝其他實用工具。

 

安裝 Python 2 和 3 的最新版本

 (1) 大部分的 Linux 發行版都有包含最新版本的 Python。

  1. 如要在 Linux 環境中安裝 Python 2 和 3,請根據您使用的發行版,安裝適用的套件。以 Debian 和 Ubuntu 而言,適用的套件為 pythonpython-devpython3  python3-dev

    請使用下列指令安裝這些套件:

    sudo apt update
    sudo apt install python python-dev python3 python3-dev
     
    sudo apt update
    sudo apt install python python
    -dev python3 python3-dev
  2. 您也需要安裝 pip。雖然 Debian 和大部分其他的發行版都會包含 python-pip 套件,但我們建議您親自安裝 pip 以取得最新版本:

    wget https://bootstrap.pypa.io/get-pip.py
    sudo python get-pip.py
     
    wget https://bootstrap.pypa.io/get-pip.py
    sudo python get-pip.py
  3. 安裝完畢後,請確認已安裝 pip

    $ pip --version
     
    $ pip --version

    輸出畫面會顯示 /usr/local/lib/python2.7/dist-packages (Python 2.7) 中的版本。您安裝的 pip 版本可能高於此處顯示的版本。

     pip 19.2.3 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
  4. pip list 列出目前安裝的套件

安裝並使用 virtualenv

virtualenv 工具可用來建立獨立的 Python 環境。這類獨立的環境可擁有單獨的 Python 套件版本,方便您把不同專案的依附元件區隔開來。建議您用 Python 在本機開發時,一律分別使用各專案的虛擬環境。

  1. 全域安裝 virtualenv

    MACOS

    WINDOWS

    LINUX

    如要透過 Python 2 或 Python 3 安裝 pip,請使用 pip install --upgrade virtualenv

  2. 安裝 virtualenv 之後,您就可以在專案中建立虛擬環境。virtualenv 會在 env資料夾中建立整個 Python 安裝的虛擬副本。

    MACOS

    WINDOWS

    LINUX

    利用 --python 標記讓 virtualenv 知道該使用的 Python 版本:

     
     
    cd your-project
    virtualenv
    --python python3 env
  3. 副本建立之後,請根據以下指令啟用虛擬環境,將您的殼層設為使用 Python 的 virtualenv 路徑:

    MACOS

    WINDOWS

    LINUX

     
     
    source env/bin/activate
  4. 現在您可以安裝套件,且不會影響其他專案或是全域 Python 安裝:

    pip install google-cloud-storage
     
    pip install google-cloud-storage

    如果要中止使用虛擬環境並返回全域 Python,您可以直接停用:

    deactivate
     

安裝編輯器 (選用)

您需要編輯器,才能開發 Python 應用程式。以下列出幾個較為熱門的編輯器 (順序不代表熱門程度):

安裝 Cloud SDK

Cloud SDK 是 Google Cloud Platform (GCP) 適用的一套工具,您可以使用這套工具所包含的 gcloudgsutil  bq,透過指令列存取 Compute Engine、Cloud Storage、BigQuery 及其他產品和服務。您可以交互執行這些工具,或是在自動化指令碼中執行這些工具。

安裝 Python 適用的 Cloud 用戶端程式庫

JetBrains 的 Python 適用的 Cloud 用戶端程式庫是 Python 開發人員整合 GCP 服務 (如 Cloud Datastore 和 Cloud Storage) 所用的方式。如要安裝個別 API 的套件 (如 Cloud Storage),請使用類似以下的指令:

pip install --upgrade google-cloud-storage
pip install --upgrade google-cloud-storage

  pip install --upgrade google-cloud-storage

後續步驟

 

stanley 發表在 痞客邦 留言(0) 人氣()

 

h5py 常用在大數據的資料儲存,相較於 csv 更快速讀寫,並且更符合Pthon 方式。

“HDF” stands for “Hierarchical Data Format”. Every object in an HDF5 file has a name, and they’re arranged in a POSIX-style hierarchy with /-separators:

最基本的操作,讀,寫,更新

Read HDF5

import h5py
filename = 'file.hdf5'
f = h5py.File(filename, 'r')

# List all groups
print("Keys: %s" % f.keys())
a_group_key = list(f.keys())[0]

# Get the data
data = list(f[a_group_key])

Write HDF5

#!/usr/bin/env python
import h5py

# Create random data
import numpy as np
data_matrix = np.random.uniform(-1, 1, size=(10, 3))

# Write data to HDF5
data_file = h5py.File('file.hdf5', 'w')
data_file.create_dataset('group_name', data=data_matrix)
data_file.close()

 

另一個讀取範例

Reading the file

import h5py

f = h5py.File(file_name, mode)

Studying the structure of the file by printing what HDF5 groups are present

for key in f.keys():
    print(key) #Names of the groups in HDF5 file.

Extracting the data

#Get the HDF5 group
group = f[key]

#Checkout what keys are inside that group.
for key in group.keys():
    print(key)

data = group[some_key_inside_the_group].value
#Do whatever you want with data

#After you are done
f.close()

另一個寫入範例

(1) 準備資料

# setting frame = np.zeros((1, 60, 80))

生成一個 dataset ,並預設此 dataset 可以彈性成長

# initialwith h5py.File("mytestfile.hdf5", "w") as f: dset = f.create_dataset('video', data=frame,maxshape=(None, 60, 80), chunks=True)

讀取這個檔案所有的 dataset,目前只有 u"video"# get key with h5py.File("mytestfile.hdf5", "r") as f: print(f.keys())

先擴增 dataset 的大小後,再塞入新的 frame

# extend datasetwith h5py.File("mytestfile.hdf5", "a") as hf:
    hf['video'].resize((hf['video'].shape[0] + 1), axis=0)
    hf['video'][-1:] = frame

 

官網範例及說明:

>>> import h5py
>>> f = h5py.File('mytestfile.hdf5', 'r')

The File object is your starting point. What is stored in this file? Remember h5py.File acts like a Python dictionary, thus we can check the keys,

>>> list(f.keys())
['mydataset']

Based on our observation, there is one data set, mydataset in the file. Let us examine the data set as a Dataset object

>>> dset = f['mydataset']

The object we obtained isn’t an array, but an HDF5 dataset. Like NumPy arrays, datasets have both a shape and a data type:

>>> dset.shape
(100,)
>>> dset.dtype
dtype('int32')

 

參考資料:

http://docs.h5py.org/en/latest/index.html

 

 

stanley 發表在 痞客邦 留言(0) 人氣()

參考資料:https://www.guru99.com/deep-learning-libraries.html

8 Best Deep learning Libraries /Framework

 

TensorFlow Vs Theano Vs Torch Vs Keras Vs infer.net Vs CNTK Vs MXNet Vs Caffe: Key Differences

Library Platform Written in Cuda support Parallel Execution Has trained models RNN CNN
Torch Linux, MacOS, Windows Lua Yes Yes Yes Yes Yes
Infer.Net Linux, MacOS, Windows Visual Studio No No No No No
Keras Linux, MacOS, Windows Python Yes Yes Yes Yes Yes
Theano Cross-platform Python Yes Yes Yes Yes Yes
TensorFlow Linux, MacOS, Windows, Android C++, Python, CUDA Yes Yes Yes Yes Yes
MICROSOFT COGNITIVE TOOLKIT Linux, Windows, Mac with Docker C++ Yes Yes Yes Yes Yes
Caffe Linux, MacOS, Windows C++ Yes Yes Yes Yes Yes
MXNet Linux, Windows, MacOs, Android, iOS, Javascript C++ Yes Yes Yes Yes Yes

 

stanley 發表在 痞客邦 留言(0) 人氣()

機器學習的七個步驟

 

機器學習的流程共有以下七個步驟:

  • 收集資料(Gathering data )
  • 準備數據(Preparing that data)
  • 選擇模型(Choosing a model)
  • 訓練機器(Training)
  • 評估分析(Evaluation)
  • 調整參數(Hyperparameter tuning)
  • 預測推論(Prediction)

 

分類器 Classifcation 

undefined

由上圖所示:機器學習分為四大塊: classification (分類), clustering (聚類), regression (回歸), dimensionality reduction (降維)。

(1)(2)classification & regression

 

 給定一個樣本特徵 x, 我們希望預測其對應的屬性值 y, 如果 y 是離散的, 那麼這就是一個分類問題,

 反之,如果 y 是連續的實數, 這就是一個回歸問題。

(3)clustering (聚類)

聚類也是分析樣本的屬性, 有點類似classification, 不同的就是classification 在預測之前是知道 y 的範圍, 或者說知道到底有幾個類別, 而聚類是不知道屬性的範圍的。所以 classification 也常常被稱為 supervised learning, 而clustering就被稱為 unsupervised learning。

(4)dimensionality reduction

降維是機器學習另一個重要的領域, 降維有很多重要的應用, 特徵的維數過高, 會增加訓練的負擔與存儲空間, 降維就是希望去除特徵的冗餘, 用更加少的維數來表示特徵. 降維算法最基礎的就是PCA了,

 

 

機器學習常見算法

機器學習領域涉及到很多的算法和模型,這裡遴選一些常見的算法:

  • 正則化算法(Regularization Algorithms)

  • 集成算法(Ensemble Algorithms)

  • 決策樹算法(Decision Tree Algorithm)

  • 回歸(Regression)

  • 人工神經網絡(Artificial Neural Network)

  • 深度學習(Deep Learning)

  • 支持向量機(Support Vector Machine)

  • 降維算法(Dimensionality Reduction Algorithms)

  • 聚類算法(Clustering Algorithms)

  • 基於實例的算法(Instance-based Algorithms)

  • 貝葉斯算法(Bayesian Algorithms)

  • 關聯規則學習算法(Association Rule Learning Algorithms)

  • 圖模型(Graphical Models) ### 正則化算法(Regularization Algorithms) 正則化算法是另一種方法(通常是回歸方法)的拓展,這種方法會基於模型複雜性對其進行懲罰,它喜歡相對簡單能夠更好的泛化的模型。 正則化中我們將保留所有的特徵變量,但是會減小特徵變量的數量級(參數數值的大小θ(j))。這個方法非常有效,當我們有很多特徵變量時,其中每一個變量都能對預測產生一點影響。 算法實例:

  • 嶺回歸(Ridge Regression)

  • 最小絕對收縮與選擇算子(LASSO)

  • GLASSO

  • 彈性網絡(Elastic Net)

  • 最小角回歸(Least-Angle Regression)



原文網址:https://kknews.cc/news/4qmlrzg.html

 

 

 


原文網址:https://kknews.cc/news/4qmlrzg.html

 

 

 

 

 

 

 

 

 

 

 

 

 


原文網址:https://kknews.cc/news/4qmlrzg.html

 

 

 

 

 

參考資料:https://kknews.cc/news/4qmlrzg.html

 

文章標籤

stanley 發表在 痞客邦 留言(0) 人氣()

Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼