监督学习建模流程
监督学习包括数据采集、数据处理、模型搭建及训练、模型测试、参数调优等阶段。这是一个不断反馈不断循环的过程。
本文我们利用Titanic数据进行建模,分析乘客各种信息与是否获救之间的规律,从来对我们的测试集进行预测。(是否获救就是标签,乘客其他信息就是特征。)
*数据来源*
Titanic数据是机器学习竞赛平台Kaggle平台入门最好的数据,记录了沉船的泰坦尼克各种乘客信息以及最终是否获救的情况。导入数据:
`df=pd.read_csv('../p1_demo/titanic_dataset.csv',na_values='NULL')
*可视化分析*
在数据处理之前可通过对数据进行可视化分析,对数据有个很好的了解和把握。
##可视化获救与没被获救的比例
df['survived'].hist()
###不同船舱级别的获救情况
pd.crosstab(df['pclass'],df['survived']).plot(kind='bar')
pd.crosstab(df['pclass'],df['survived'])
*数据处理*
包括异常值处理、缺失值填充、噪音数据过滤、数据形式转换、特征提取等操作。
以上Titanic数据算法不能直接识别,并且像年龄费用为连续型数据,我们需要处理成和其他特征一致的离散性特征。所以我们进行如下处理:
详细处理代码如下:
##姓名的处理
df['Name_length']=df['name'].apply(len)
##兄弟姐妹与配偶、父母小孩
df['FamilySize']=df['sibsp']+df['parch']+1
df['IsAlone']=0
df.loc[df['FamilySize']==1,'IsAlone']=1
##费用的处理
df['fare']=df['fare'].fillna(df['fare'].median())
df['categoricalFare']=pd.cut(df['fare'],4)
#print(train)
##年龄
age_avg=df['age'].mean()
age_std=df[