文章列表
Python 股票分析:Stocker 強大的股價預測分析工具 (附完整程式碼)
Github 完整程式碼
這篇文章將教大家如何從 yahoo finance 取得股價歷史資料,並使用 Stocker 這個強大的工具來預測股價,詳細理論請參考 Facebook 於 2017年發表的論文 Forecasting at Scale 。
此外我有修改過原始 Stocker 的原始程式碼以串接台股資料。因此請想親自跑跑看程式的人下載完整程式碼,並安裝 Anaconda,使用Jupyter-notebook 開啟 grandma_stocker.ipynb 。
看完這篇文章將學到:
使用 yfinance 從 Yahoo Finance 抓股歷史股價下來使用 Stocker 視覺化歷史股價使用 Stocker 中的 Prophet ...
SQL Injection攻擊
前言
不管是在網站或是應用程式開發等等,許多時候我們會用資料庫來儲存資料。而除非你用的是NoSQL資料庫,不然大多數都使用SQL作為查詢語言。
發生條件
有使用者輸入欄位使用SQL查詢語言沒有檢查或保護機制使用者很壞
運作方式
欄位裡輸入一些SQL指令再搭配正確位置的單(雙)引號讓輸入的指令脫離字串使其可以執行。
範例:PHP搭配MySQL資料庫
情況:假設現在有一個表單為使用者輸入任何名稱,提交後透過SQL指令在資料庫查詢。
HTML Code:
<form method="POST">
<input type="text" name="userInput" placeholder="輸入查詢名稱">
<button type="submit">查詢</button>
</form>
PHP Code:
$userInput = $_POST;
$conn = mysqli_connect('localhost', 'root', '', 'db');
$sql = "SELECT * FROM users WHERE username='$userInput'";
$result = mysqli_query($sql);
.
.
.
正常使用者:在欄位輸入一般名稱如,這時候SQL指令如下:
$sql ...
Python 股票分析:爬取台積電 (2330) 歷史股價
今天我們將從 臺灣證券交易所 爬取台積電的股價及其他日成交資訊,包含:
日期、成交股數、成交金額、開盤價、最高價、收盤價、漲跌價差、成交筆數
我們可以從證交所的 個股日成交資訊 網頁查詢到上市股票的股價等資訊。這篇文章將以台積電 (代號 2330為例),若你對其他標的有興趣,也可將 2330 代換成其他公司代碼。
資料來源 : 臺灣證券交易所
我們使用 Python 爬取股價時將使用 列印 / HTML 那個網頁,請點進去。網址是
再看看 2020 年1月份的
再看一次網址
二月份:
https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=html&date=20200224&stockNo=2330
一月份:
https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=html&date=20200101&stockNo=2330
仔細觀察網址,有沒有發現只有在 date 的欄位有差別,他其實是有一個版型的。date 後面接日期,stockNo 後面接股票代碼,因此這段網址就是 2020年2月 代號為 2330 的日成交資訊 (經過測試年月日的日是不重要的,填20200201也可以得到一樣的資訊)。
爬蟲不難,只要發現資料來源的規律就可以撰寫程式將內容自動爬下來。
Pandas、requests 爬取網頁
我們將使用 Python ...
Python 股票分析:串接 MySQL 資料庫
第一步 安裝 MySQL
sudo apt-get update
sudo apt-get install mysql-server
跑一個簡單的程式幫助設置 MySQL 讓 MySQL 使用上更安全
sudo mysql_secure_installation
安裝完成後使用 sudo 進入 MySQL
sudo mysql
建立一個新使用者,有可能 MySQL 因為剛剛有 validate_password 這個插件 (plugin) 的關係,密碼需要複雜一些。
CREATE USER 'grandma'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Grandma_sql123';
詳細密碼的要求請輸入指令
SHOW ...
Windows 安裝 MySQL、MySQL Workbench
如果你想成為一位資料科學家,勢必得學習資料庫,因為當手上的資料非常多,使用檔案的方式來搬移、讀取是非常沒有效率的。我們可以讓資料庫這個各種操作早已被優化過的工具來管理手上大量的資料。本篇文章將示範如何在 Windows 下載 MySQL 資料庫 、MySQL Workbench。
第一步 下載 MySQL
首先我們要官方網站先下載 MySQL,兩個都可選擇,最後都會安裝一樣的東西,差別在一個需要連網安裝一個不用,為了方便起見我們下載下面那個 (檔案較大的)。 https://dev.mysql.com/downloads/installer/
可以直接按 "No thanks, just start my download" 跳過登入過程
第二步 安裝 MySQL
下載好後長這樣
按 Execute 將一些 Requirements 工具安裝
設定 root 的密碼,請記住! 有些時候因為資安問題,不會直接使用 root ...
什麼是Prepared Statement,為什麼要使用它?
什麼是Prepared Statement?
Prepared Statement或參數化查詢是一種用於資料庫查詢時的技術,使用時會在SQL指令中需要填寫數值的地方用參數代替。
運作原理
使用時,資料庫伺服器不會把設參數的地方當作SQL指令的一部分來處理,而是先在資料庫編譯完後,再將參數套用並執行。
為什麼要使用它?
Prepared Statement是目前公認防禦SQL Injection攻擊最有效的方法。當然除了安全方面,它在效能上也佔有優勢。
在PHP上使用Prepared Statement
$name = 'grandpa'; #自訂變數
$conn = mysqli_connect('localhost', 'root', '', 'db'); #連線至資料庫
$sql = 'SELECT * FROM users WHERE username=?'; #SQL指令 ?代表參數
$stmt = mysqli_stmt_init($conn); #使用前初始化
mysqli_stmt_prepare($stmt, $sql); #將SQL進行編譯
mysqli_stmt_bind_param($stmt, 's', ...
Python 教學:在 Windows 安裝 Anaconda
Anaconda 提供了一個非常好的環境讓我們可以無後顧之憂的學習 Python, 現在市面上的書籍、網路教學也幾乎都會推薦我們安裝Anconda! 裡面提供套件管理的功能、虛擬環境。安裝 Anaconda 也可以無縫接軌 Jupyter Notebook、Spyder 等等很好用的 Coding 環境! 讓我們開始吧~
第一步
先進到Anaconda官網的下載頁面: https://www.anaconda.com/distribution/在中間選擇Windows在 Python3.7 version 點選下載
第二步
下載下來長上面那樣,之後無腦安裝即可,對,第二步就是「下一步」。
第三步
下載完成後,可在 Windows 左下角搜尋 "Anaconda",可以看到非常有用的程式,你會愛上他們的!
Anaconda NavigatorSpyderJupyter Notebook
Anaconda Navigator
Spyder
Jupyter Notebook
其中 Anaconda Navigator 可以用來管理整個 Anaconda 環境,非常好用。請參考Python教學:Anaconda Navigator ...
語音合成 Part3 – Tacotron End to End TTS 模型
原始論文連結
Tacotron: Towards End-to-End Speech Synthesis
Tacotron 介紹
雖然 WaveNet 在 TTS 上可以做得很好,但是他需要自行生成 linguistic features 當作 input,因此仍然不是 end-to-end 的。Tacotron 希望能做到直接使用 <text, audio> pair 來訓練model,也就是使用較少的 feature engineering 特徵工程和 heuristic 來做 TTS。 Tacotron ...
語音合成 Part2 – WaveNet 語音生成模型
原始論文連結
WaveNet: A Generative Model for Raw Audio
WaveNet 介紹
WaveNet 在 2016 年由 Google 的 DeepMind 提出,是一個直接生成 raw audio 的深度學習模型。 Google 也有提供語音合成 API 讓你可以輸入文字產生自然的人類語音。有趣的是,使用WaveNet 的 API 是比較貴的,因此可以看出 Google 開發出 WaveNet 不僅推進了語音合成的進展,也為Google 帶來商業利益。( ...
語音合成 Part1 – Text-to-speech (TTS) 介紹
Text-to-speech (TTS) 簡介
你是不是也有在使用 Google 翻譯的時候,讓 Google 小姐把你打的文字念出來? 這種文字轉換成語音的技術稱為文字轉語音 Text To Speech,簡稱 TTS。Text-to-speech (TTS) 的目標是將給定的文字 (text) 合成出對人類來說自然的語音 (speech)。
傳統上有兩種方法來實現 TTS,分別是拼接式合成 (concatenative speech synthesis) 和參數式合成 ( parametric speech synthesis )。隨著人工智慧、深度學習的發展,Google DeepMind 於 ...
Linux教學:chmod指令
chmod - 更改存取權限
語法:
chmod
選項:
-f, --silent, --quiet:隱藏任何錯誤訊息。
-v, --verbose:列出每個檔案處理之詳細過程。
-c, --changes:與-v類似,但是只列出有更改之過程。
-R, --recursive:以遞迴的方式對目前目錄下的所有檔案及子目錄進行更改。
--help:列出幫助資訊。
--version:列出版本資訊。
模式代表著要更改至什麼權限,可以用字串或數字表達,通常字串對初學者是比較好理解的。
權限字串:當你在terminal使用ls -l指令後,可以發現每個檔案都有一串類似-rwxrwxrwx的字串,第一個字元可能是-或d,前者代表是檔案,後者代表的是資料夾,剩下的九個字元則為三個一組分別代表User(檔案擁有者)、Group(檔案所屬群組之使用者)、Other(其他使用者)對此檔案之權限。
r(read):讀取的權限
w(write):修改的權限
x(execute):執行的權限
圖一
圖一權限字串分析:
名稱:manage.py
-:檔案
rwx:檔案擁有者可以讀、寫、執行
r-x:檔案所屬群組之使用者可以讀、執行
r-x:其他使用者可以讀、執行
字串模式:
語法:[ugoa...][[+-=][rwxXugo...]][,...]
使用者
解釋
u
檔案擁有者
g
檔案所屬群組之使用者
o
其他使用者
a
所有使用者
運算子
解釋
+
將所選之屬性加到所選之使用者上
-
將所選之屬性從所選之使用者上移除
=
將所選之屬性assign給所選之使用者
屬性
解釋
r
讀取權限
w
編輯權限
x
執行權限
X
若對象為資料夾,或所有使用者裡已有人有執行權限,則給予執行權限
u
檔案擁有者目前所持有之權限
g
檔案所屬群組之使用者目前所持有之權限
o
其他使用者目前所持有之權限
指令範例:
chmod a+w filename... //讓所有使用者都有編輯filename檔案的權限。
chmod u=rwx,g+x filename... //給予檔案擁有者所有權限,檔案所屬群組之使用者則新增執行權限。
chmod =r filename... //若無指定使用者則視為所有使用者。將所有使用者權限變更為只能讀取。
chmod go=u filename... //將檔案所屬群組之使用者及其他使用者之權限變更為與檔案擁有者一致。
chmod =rwx * //將當前目錄裡所有檔案之任何權限開放給所有人。
chmod u+rwx,go-rwx * //檔案擁有者擁有對當前目錄裡所有檔案之所有權限,而除了檔案擁有者以外,其餘使用者什麼都不能做。
數字模式:
語法:[abc]
a, ...
下載 Youtube 影片 : youtube-dl 指令教學
假設今天你想下載 Lex Fridman 的 AI podcast 裡與 Elon Musk 的對話: https://www.youtube.com/watch?v=dEv99vxKjVI
https://www.youtube.com/watch?v=dEv99vxKjVI
步驟:
安裝 youtube-dl查看可下載 Youtube 影片格式開始下載
安裝 youtube-dl:
sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
有可能需要下載到 /usr/bin/youtube-dl
sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/bin/youtube-dl
sudo chmod ...