泰坦尼克(机器学习逻辑回归)

本文利用机器学习的逻辑回归模型预测泰坦尼克号乘客的生存情况。通过数据预处理,处理缺失值,特别是用随机森林预测年龄,然后进行模型训练。逻辑回归模型显示,性别、船舱、年龄和登船港口等因素显著影响生存率。
摘要由CSDN通过智能技术生成

泰坦尼克(机器学习逻辑回归)

原文链接

数据预处理

import pandas as pd
train=pd.read_csv('C:/Users/Admin/Downloads/train.csv')
train.info()

<class ‘pandas.core.frame.DataFrame’>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId 891 non-null int64
Survived 891 non-null int64
Pclass 891 non-null int64
Name 891 non-null object
Sex 891 non-null object
Age 714 non-null float64
SibSp 891 non-null int64
Parch 891 non-null int64
Ticket 891 non-null object
Fare 891 non-null float64
Cabin 204 non-null object
Embarked 889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB

可见age,cabin有缺失数据,
对于age:
用随机森林预测缺失的age

随机森林

用在原始数据中做不同采样,建立多颗DecisionTree,再进行average等等来降低过拟合现象,提高结果的机器学习算法

缺失值

如果缺值的样本占总数比例极高,我们可能就直接舍弃了,作为特征加入的话,可能反倒带入noise,影响最后的结果了
如果缺值的样本适中,而该属性非连续值特征属性(比如说类目属性),那就把NaN作为一个新类别,加到类别特征中
如果缺值的样本适中,而该属性为连续值特征属性,有时候我们会考虑给定一个step(比如这里的age,我们可以考虑每隔2/3岁为一个步长),然后把它离散化,之后把NaN作为一个type加到属性类目中。
有些情况下,缺失的值个数并不是特别多,那我们也可以试着根据已有的值,拟合一下数据,补充上。

#用随机森林处理age缺失值
from sklearn.ensemble import RandomForestRegressor
age_df=train[['Age','Fare', 'Parch', 'SibSp','Pclass']]


known_age=age_df[age_df.Age.notnull()].as_matrix()
unknown_age=age_df[age_df.Age.isnull()].as_matrix()

y=known_age[:, 0]
x=known_age[:, 1:]


rfr=RandomForestRegressor(random_state=0,n_estimators=2000,n_jobs=-1)
rfr.fit(x,y)
predictAge=rfr.predict(unknown_age[:,1:])

train.loc[(train.Age.isnull()),'Age']=predictAge

因为逻辑回归建模时,需要输入的特征都是数值型特征,所以,先对类目型的特征因子化,使用pandas的"get_dummies"来完成这个工作,并拼接在原来的"data_train"之上

train.loc[(train.Cabin.notnull()),'Cabin']=1
train.loc[(train.Cabin.isnull()),'Cabin']=0

dummies_sex=pd.get_dummies(train['Sex'],prefix='Sex')
dummies_Cabin=pd.get_dummies(train['Cabin'],prefix='Cabin')
dummies_embarked=pd.get_dummies(train['Embarked'],prefix='Embarked')
dummies_Pclass=pd.get_dummies(train['Pclass'],prefix='Pclass')

train=pd.concat([train,dummies_sex,dummies_Cabin,dummies_embarked,dummies_Pclass]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值