泰坦尼克号生存预测(下)-预测和特征构造

预测

如下代码,使用逻辑回归生存预测。

import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression

data=pd.read_csv(r"E:\MLdata\kaggle_titanic\processing.csv")

# print(data)

data_train=data[data['Survived']!=-1].drop(["PassengerId"],axis=1)
data_train_x=data_train.iloc[:,:-1]
data_train_y=data_train.iloc[:,-1]
# print(data_train_x.columns)

Lr=LogisticRegression()
Lr.fit(data_train_x,data_train_y)

data_predict=data[data['Survived']==-1].drop(['Survived'],axis=1)
data_predict_x=data_predict.drop(['PassengerId'],axis=1)
# print(data_predict_x.columns)

label=Lr.predict(data_predict_x)

# standard_label=pd.read_csv(r"E:\MLdata\kaggle_titanic\gender_submission.csv")["Survived"]
# print(np.sum(standard_label==label)/standard_label.shape[0])

data_predict.insert(data_predict.columns.size,"Survived",label)
df=pd.DataFrame(data=data_predict.loc[:,['PassengerId',"Survived"]].values,columns=["PassengerId","Survived"])
df.to_csv(r"E:\MLdata\kaggle_titanic\res\t2.csv",index=False)

构造特征

特征构造主要考虑如下方面:

  • 数值特征的非线性因素,如对一些数值特征进行指数放大、缩小
  • 特征与特征之间的关联关系

由于儿童更能得到照顾,所以构造特征:

data_train['isChild']=(data_train['Age']<=10).astype(int)
# data_train['isChild'][:3]
# 0    0
# 1    0
# 2    0
# Name: isChild, dtype: int32

年龄越大越不易生存,所以放大年龄:

data_train['Age']=data_train['Age']*data_train['Age']

考虑几等舱(比如一等)和年轻的更容易生存,故构造特征 AgeClass A g e ∗ C l a s s

data_train['Age_Pclass']=data_train['Age']*data_train['Pclass']

并归一化:

import sklearn.preprocessing as preprocessing
scaler=preprocessing.StandardScaler()
data_train['Age']=scaler.fit_transform(data_train['Age'].values.reshape(-1,1))
data_train['Age_Pclass']=scaler.fit_transform(data_train['Age_Pclass'].values.reshape(-1,1))

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值