Ⅰ 如何用Python在10分鍾內建立一個預測模型
預測模型的分解過程
我總是集中於投入有質量的時間在建模的初始階段,比如,假設生成、頭腦風暴、討論或理解可能的結果范圍。所有這些活動都有助於我解決問題,並最終讓我設計出更強大的商業解決方案。為什麼你要在前面花費這段時間,這有充分的理由:
你有足夠的時間投入並且你是無經驗的(這是有影響的)
你不帶有其它數據觀點或想法的偏見(我總是建議,在深入研究數據之前做假設生成)
在後面的階段,你會急於完成該項目而沒有能力投入有質量的時間了。
這個階段需要投入高質量時間,因此我沒有提及時間表,不過我建議你把它作為標準的做法。這有助於你建立建立更好地預測模型,在後面的階段的只需較少的迭代工作。讓我們來看看建立第一個模型的剩餘階段的時間表:
數據描述性分析——50%的時間
數據預處理(缺失值和異常值修復)——40%的時間
數據建模——4%的時間
性能預測——6%的時間
讓我們一步一步完成每個過程(每一步投入預測的時間):
階段1:描述性分析/數據探索
在我剛開始成為數據科學家的時候,數據探索占據了我大量的時間。不過,隨著時間的推移,我已經把大量的數據操作自動化了。由於數據准備占據建立第一個模型工作量的50%,自動化的好處是顯而易見的。
這是我們的第一個基準模型,我們去掉任何特徵設計。因此,描述分析所需的時間僅限於了解缺失值和直接可見的大的特徵。在我的方法體系中,你將需要2分鍾來完成這一步(假設,100000個觀測數據集)。
我的第一個模型執行的操作:
確定ID,輸入特徵和目標特徵
確定分類和數值特徵
識別缺失值所在列
階段2:數據預處理(缺失值處理)
有許多方法可以解決這個問題。對於我們的第一個模型,我們將專注於智能和快速技術來建立第一個有效模型。
為缺失值創建假標志:有用,有時缺失值本身就攜帶了大量的信息。
用均值、中位數或其它簡單方法填補缺失值:均值和中位數填補都表現良好,大多數人喜歡用均值填補但是在有偏分布的情況下我建議使用中位數。其它智能的方法與均值和中位數填補類似,使用其它相關特徵填補或建立模型。比如,在Titanic生存挑戰中,你可以使用乘客名字的稱呼,比如:「Mr.」, 「Miss.」,」Mrs.」,」Master」,來填補年齡的缺失值,這對模型性能有很好的影響。
填補缺失的分類變數:創建一個新的等級來填補分類變數,讓所有的缺失值編碼為一個單一值比如,「New_Cat」,或者,你可以看看頻率組合,使用高頻率的分類變數來填補缺失值。
由於數據處理方法如此簡單,你可以只需要3到4分鍾來處理數據。
階段3:數據建模
根據不同的業務問題,我推薦使用GBM或RandomForest技術的任意一種。這兩個技術可以極其有效地創建基準解決方案。我已經看到數據科學家通常把這兩個方法作為他們的第一個模型同時也作為最後一個模型。這最多用去4到5分鍾。
階段4:性能預測
有各種各樣的方法可以驗證你的模型性能,我建議你將訓練數據集劃分為訓練集和驗證集(理想的比例是70:30)並且在70%的訓練數據集上建模。現在,使用30%的驗證數據集進行交叉驗證並使用評價指標進行性能評估。最後需要1到2分鍾執行和記錄結果。
本文的目的不是贏得比賽,而是建立我們自己的基準。讓我們用python代碼來執行上面的步驟,建立你的第一個有較高影響的模型。
讓我們開始付諸行動
首先我假設你已經做了所有的假設生成並且你擅長使用python的基本數據科學操作。我用一個數據科學挑戰的例子來說明。讓我們看一下結構:
步驟1:導入所需的庫,讀取測試和訓練數據集。
#導入pandas、numpy包,導入LabelEncoder、random、RandomForestClassifier、GradientBoostingClassifier函數
import pandas as pd
import numpy as np
fromsklearn.preprocessing import LabelEncoder
import random
fromsklearn.ensemble import RandomForestClassifier
from sklearn.ensembleimport GradientBoostingClassifier
#讀取訓練、測試數據集
train=pd.read_csv('C:/Users/AnalyticsVidhya/Desktop/challenge/Train.csv')
test=pd.read_csv('C:/Users/AnalyticsVidhya/Desktop/challenge/Test.csv')
#創建訓練、測試數據集標志
train='Train'
test='Test'
fullData =pd.concat(,axis=0) #聯合訓練、測試數據集
步驟2:該框架的第二步並不需要用到python,繼續下一步。
步驟3:查看數據集的列名或概要
fullData.columns # 顯示所有的列名稱
fullData.head(10) #顯示數據框的前10條記錄
fullData.describe() #你可以使用describe()函數查看數值域的概要
步驟4:確定a)ID變數 b)目標變數 c)分類變數 d)數值變數 e)其他變數。
ID_col =
target_col =
cat_cols =
num_cols= list(set(list(fullData.columns))-set(cat_cols)-set(ID_col)-set(target_col)-set(data_col))
other_col= #為訓練、測試數據集設置標識符
步驟5:識別缺失值變數並創建標志
fullData.isnull().any()#返回True或False,True意味著有缺失值而False相反
num_cat_cols = num_cols+cat_cols # 組合數值變數和分類變數
#為有缺失值的變數創建一個新的變數
# 對缺失值標志為1,否則為0
for var in num_cat_cols:
if fullData.isnull().any()=True:
fullData=fullData.isnull()*1
步驟6:填補缺失值
#用均值填補數值缺失值
fullData = fullData.fillna(fullData.mean(),inplace=True)
#用-9999填補分類變數缺失值
fullData = fullData.fillna(value = -9999)
步驟7:創建分類變數的標簽編碼器,將數據集分割成訓練和測試集,進一步,將訓練數據集分割成訓練集和測試集。
#創建分類特徵的標簽編碼器
for var in cat_cols:
number = LabelEncoder()
fullData = number.fit_transform(fullData.astype('str'))
#目標變數也是分類變數,所以也用標簽編碼器轉換
fullData = number.fit_transform(fullData.astype('str'))
train=fullData='Train']
test=fullData='Test']
train = np.random.uniform(0, 1, len(train)) <= .75
Train, Validate = train=True], train=False]
步驟8:將填補和虛假(缺失值標志)變數傳遞到模型中,我使用隨機森林來預測類。
features=list(set(list(fullData.columns))-set(ID_col)-set(target_col)-set(other_col))
x_train = Train.values
y_train = Train.values
x_validate = Validate.values
y_validate = Validate.values
x_test=test.values
random.seed(100)
rf = RandomForestClassifier(n_estimators=1000)
rf.fit(x_train, y_train)
步驟9:檢查性能做出預測
status = rf.predict_proba(x_validate)
fpr, tpr, _ = roc_curve(y_validate, status)
roc_auc = auc(fpr, tpr)
print roc_auc
final_status = rf.predict_proba(x_test)
test=final_status
test.to_csv('C:/Users/Analytics Vidhya/Desktop/model_output.csv',columns=)
現在可以提交了!
Ⅱ 怎樣用 Python 寫一個股票自動交易的程序
方法一
前期的數據抓取和分析可能python都寫好了,所以差這交易指令介面最後一步。對於股票的散戶,正規的法子是華寶,國信,興業這樣願意給介面的券商,但貌似開戶費很高才給這權利,而且只有lts,ctp這樣的c++介面,沒python版就需要你自己封裝。
方法二
是wind這樣的軟體也有直接的介面,支持部分券商,但也貴,幾萬一年是要的。
方法三
滑鼠鍵盤模擬法,很復雜的,就是模擬鍵盤滑鼠去操作一些軟體,比如券商版交易軟體和大智慧之類的。
方法四
就是找到這些軟體的關於交易指令的底層代碼並更改,不過T+1的規則下,預測准確率的重要性高於交易的及時性,花功夫做數據分析就好,交易就人工完成吧
Ⅲ 如何建立一個股票量化交易模型並模擬
研究量化投資模型的目的是找出那些具體盈利確定性的時空價格形態,其最重要手段的概率取勝,最重要的技術是概率統計,最主要的研究方向是市場行為心理。那麼我們在選擇用於研究的參數時,也應該用我們的經驗來確定是否把某技術參數放進去,因為一般來說定性投資比較好用的參數指標對量化投資同樣適用。
量化投資區別於傳統定性投資的主要特徵在於模型。我打個比方,我們看病,中醫與西醫的診療方法是不同,中醫是望、聞、問、切,最後判斷出的結果,很大程度上基於中醫的經驗,主觀定性程度大一些;西醫就不同了,先要病人去拍片子、化驗等,這些都要依託於醫學儀器,最後得出結論,對症下葯。中醫對醫生的經驗要求非常高,他們的主觀判斷往往決定了治療效果,而西醫則要從容得多,按事先規定好的程序走就行了。量化投資就是股票投資中的西醫,它可以比較有效地矯正理智與情緒的不兼容現象。
量化投資的一般思路:選定某些技術指標(我們稱之為參數,往往幾個組成一組),並將每一個參數的數據范圍進行分割,成幾等份。然後,用計算機編程寫出一段能對這些參數組對股票價格造成的影響進行數據統計的程序,連接至大型資料庫進行統計計算,自動選擇能夠達到較高收益水平的參數組合。但是選出這些參數組後還不能馬上應用,因為這里涉及到一個概率陷阱的問題,比如說,有1到100這一百個數字放在那裡,現在讓你選擇,請問你選到100的可能性是多大?是的,就是1/100,如果較幸運你選到了100並不能說明你比別人聰明,而是概率的必然。所以,在進行統計時要特別關注統計的頻率與選出的結果組數量之間的關系。在選出符合要求的參數組後我們還應留出至少三年的原始市場數據進行驗證,只有驗證合格後才能試用。
量化投資原始數據策略:我們選用96年後的市場數據,因為96年股市有過一次交易政策改革(你可以自己查詢了解一下),為了不影響研究結果我們不採納96年以前的數據進資料庫。
量化投資研究的硬設備:高計算性能電腦,家用電腦也可以,不過運算時間會很長,我曾經用家用電腦計算了三個月時間才得到想要的數據。
統計方法:可以選用遺傳演算法,但我在這里陪大家做的是比較簡單的模型,所以採用普通統計方法就可以了。
用於量化研究的軟體:我採用的是免費的大型資料庫MYSQL,ASP網路編程語言,以及可以設置成網路伺服器的旗艦版WIN7操作系統。
Ⅳ 怎樣用 Python 寫一個股票自動買賣的程序
方法一
前期的數據抓取和分析可能python都寫好了,所以差這交易指令介面最後一步。對於股票的散戶,正規的法子是華寶,國信,興業這樣願意給介面的券商,但貌似開戶費很高才給這權利,而且只有lts,ctp這樣的c++介面,沒python版就需要你自己封裝。
方法二
是wind這樣的軟體也有直接的介面,支持部分券商,但也貴,幾萬一年是要的。
方法三
滑鼠鍵盤模擬法,很復雜的,就是模擬鍵盤滑鼠去操作一些軟體,比如券商版交易軟體和大智慧之類的。
方法四
就是找到這些軟體的關於交易指令的底層代碼並更改,不過T+1的規則下,預測准確率的重要性高於交易的及時性,花功夫做數據分析就好,交易就人工完成吧
Ⅳ 如何建立一個股票量化交易模型並模擬
用文化財經軟體,編寫程序化交易系統,具體參考官網教程
Ⅵ 如何利用Python預測股票價格
預測股票價格沒有意義。
單支股票價格,多股組合,大盤這些都可以使用神經網路來學習,02年就做過了,漲跌預測平均能達到54%到57%的准確率,但是只能定性,無法定量,因此,在扣除印花稅之後無利可圖。
純粹使用股票交易數據來預測並保證總體獲利不是程序能辦到的,人也辦不到。
目前世界上最先進的炒股機器也只能利用網路時差那微不可計的零點幾秒在歐洲與美國證券間倒來倒去,那套系統研發費用數千萬,硬體(主要是獨立光纜)費用以億計。
Ⅶ 有沒有會用Python編寫一個簡單的建模股票價格的小程序能夠對股票數據進行簡單預測即可!求助!
雖然懂python 但是不懂股票,
採用random()可以么,哈哈
Ⅷ 用Python 進行股票分析 有什麼好的入門書籍或者課程嗎
個人覺得這問題問的不太對,說句不好的話,你是來搞編程的還是做股票的。
《Learn Python The Hard Way》,也就是我們所說的笨辦法學python,這絕對是新手入門的第一選擇,裡面話題簡練,是一本以練習為導向的教材。有淺入深,而且易懂。
其它的像什麼,《Python源碼剖析》,《集體智慧編程》,《Python核心編程(第二版)》等題主都可以適當的選擇參讀下,相信都會對題主有所幫助。
最後,還是要重復上面的話題,炒股不是工程學科,它有太多的變數,對於現在的智能編程來說,它還沒有辦法及時的反映那些變數,所以,只能當做一種參考,千萬不可過渡依賴。
結語:pyhton相對來說是一種比較高端的學科,需要有很強的邏輯能力。所以入門是非常困難的,如果真的要學習,是需要很大的毅力去堅持下去的,而且不短時間就能入門了,要有所心理准備。
Ⅸ 如何用Python在10分鍾內樹立一個預測模型
所謂預測模型我理解是機器學習的監督式演算法。 常用的有 K 近鄰, 決策樹, 樸素貝葉斯等。 舉例: 使用k近鄰演算法預測一個女的是不是美女: 我們抽取特徵值:
身高,體重,三圍等。 你先設置一些經驗數據,例如: A: 165CM 50KG, 23 32,31 美 B 150 60KG 23 23 23 丑 現在輸入 C 163 45 25 30 30 選擇K =3, 演算法會找經驗數據中和這個數據最接近的三個 值,判斷這三個對象是 美 還是丑。 如果2,3個美,則預測為美。否則為丑。
對應的python代碼在網上都有,估計20-30 行吧。 自己找找。