量化软件下载:赫兹股票量化软件逻辑回归
清理我们的数据
在此,我们通过删除 NaN(缺失)值来清理数据,同时避免/删除数据集合中不必要的列。
运用逻辑回归,您需要具有双精度和整数值,因此您必须避免无意义的字符串值。在这种情况下,我们将忽略以下列:
Name 列 (它的信息没有任何有意义)
Ticket 列 (对事故的幸存没有任何意义)
Cabin 列 (它有太多的缺失值,即使前 5 行也表现如此)
Embarked (我认为这无关紧要)
为此,我将在 WPS office 中打开 CSV 文件,并手动删除这些列,您可以用您所选的任何电子表格程序。
经由电子表格删除这些列后,我们就来可视化新数据。
new_data = pd.read_csv(r'C:\Users\Omega Joctan\AppData\Roaming\MetaQuotes\Terminal\892B47EBC091D6EF95E3961284A76097\MQL5\Files\titanic.csv') new_data.head(5)
输出:

编辑切换为居中
我们现已清理数据完毕,但在年龄列中仍然有缺失的数值,更不用说在性别列中还有字符串值。 我们需通过一些代码来解决这个问题。 我们来创建一个标签编码器,将字符串男性和女性分别转换为 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); } }