量化軟件下載:赫茲股票量化軟件邏輯回歸
清理我們的數(shù)據(jù)
在此,我們通過刪除 NaN(缺失)值來清理數(shù)據(jù),同時避免/刪除數(shù)據(jù)集合中不必要的列。
運用邏輯回歸,您需要具有雙精度和整數(shù)值,因此您必須避免無意義的字符串值。在這種情況下,我們將忽略以下列:
Name 列 (它的信息沒有任何有意義)
Ticket 列 (對事故的幸存沒有任何意義)
Cabin 列 (它有太多的缺失值,即使前 5 行也表現(xiàn)如此)
Embarked (我認(rèn)為這無關(guān)緊要)
為此,我將在 WPS office 中打開 CSV 文件,并手動刪除這些列,您可以用您所選的任何電子表格程序。
經(jīng)由電子表格刪除這些列后,我們就來可視化新數(shù)據(jù)。
new_data = pd.read_csv(r'C:\Users\Omega Joctan\AppData\Roaming\MetaQuotes\Terminal\892B47EBC091D6EF95E3961284A76097\MQL5\Files\titanic.csv') new_data.head(5)
輸出:

編輯切換為居中
我們現(xiàn)已清理數(shù)據(jù)完畢,但在年齡列中仍然有缺失的數(shù)值,更不用說在性別列中還有字符串值。 我們需通過一些代碼來解決這個問題。 我們來創(chuàng)建一個標(biāo)簽編碼器,將字符串男性和女性分別轉(zhuǎn)換為 0 和 1。
void CLogisticRegression::LabelEncoder(string &src[],int &EncodeTo[],string members="male,female") { ? string MembersArray[]; ? ushort separator = StringGetCharacter(m_delimiter,0); ? StringSplit(members,separator,MembersArray); //convert members list to an array ? ArrayResize(EncodeTo,ArraySize(src)); //make the EncodeTo array same size as the source array ? ? ? ?int binary=0; ? ? ?for(int i=0;i<ArraySize(MembersArray);i++) // loop the members array ? ? ? ?{ ? ? ? ? ? string val = MembersArray[i]; ? ? ? ? ? binary = i; //binary to assign to a member ? ? ? ? ? int label_counter = 0; ? ? ? ? ? ? ? ? ? ? for (int j=0; j<ArraySize(src); j++) ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ?string source_val = src[j]; ? ? ? ? ? ? ? ? if (val == source_val) ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ?EncodeTo[j] = binary; ? ? ? ? ? ? ? ? ? ?label_counter++; ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ?} ? ? ? ? ? Print(MembersArray[binary]," total =",label_counter," Encoded To = ",binary); ? ? ? ?} }