导读:实现该模型的训练要用到的主要算法和实现思路是.""".项目:泰坦尼克号乘客生存预测.主要算法:决策树\随机森林.实现思路:.1、导包.2、读取数据.3、对数据进行基本处理.4、特征工程.5、决策树预估器流程.6、模型评估.""".首先的首先当然是导包啦.# 1、导包.import
实现该模型的训练要用到的主要算法和实现思路是
"""
项目:泰坦尼克号乘客生存预测
主要算法:决策树\随机森林
实现思路:
1、导包
2、读取数据
3、对数据进行基本处理
4、特征工程
5、决策树预估器流程
6、模型评估
"""
首先的首先当然是导包啦
# 1、导包
import pandas as pd # 读取文件用的
from sklearn.feature_extraction import DictVectorizer # 用来进行字典特征抽取
from sklearn.tree import DecisionTreeClassifier #决策树
from sklearn.model_selection import GridSearchCV # 网格搜索和CV(交叉验证)
from sklearn.ensemble import RandomForestClassifier # 随机森林
然后就是读取文件里面的数据进来了
# 2、读取数据
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
y_test = pd.read_csv('gender_submission.csv')
数据集下载:百度网盘
链接:https://pan.baidu.com/s/1slaouE4Es37U8u0U-kDJnw
提取码:ss5o
接着是进行对数据进行基本的处理了,以下是作者的处理方法:
第一步是把多余的特征去除,选取出有用的特征,作者认为,在数据集里面有用的有”Pclass”,“Age”,“Sex”三个,所以我对它进行提取出来
# 3、对数据进行基本处理
# 1)选取有用的数据
x_train = train[["Pclass","Age","Sex"]]
y_train = train["Survived"]
x_test = test[["Pclass","Age","Sex"]]
第二步是把缺失值给填充为平均值。对于缺失值有两种处理方式,一是如果该特征不重要,直接删除便是,二是填充平均值或众数
# 2)缺失值处理:用平均值填充
x_train["Age"].fillna(x_train["Age"].mean(),inplace=True)
x_test["Age"].fillna(x_train["Age"].mean(),inplace=True)
# .fillna()是用来把括号里的值填充进空值里,里面的inplace是决定是否要在自身进行修改
# .mean()是取到其平均值
第三步是把数据转化成字典类型
# 3)转换成字典
x_train = x_train.to_dict(orient="records")
x_test = x_test.to_dict(orient="records")
“““
orient 控制的是转换成的字典的形式
orient =‘dict’,是函数默认的,转化后的字典形式:{column(列名) : {index(行名) : value(值) )}};
orient =‘list’ ,转化后的字典形式:{column(列名) :{[ values ](值)}};
orient =‘series’ ,转化后的字典形式:{column(列名) : Series (values) (值)};
orient =‘split’ ,转化后的字典形式:{‘index’ : [index],‘columns’ :[columns],’data‘ : [values]};
orient =‘records’ ,转化后是 list形式:[{column(列名) : value(值)}…{column:value}];
orient =‘index’ ,转化后的字典形式:{index(值) : {column(列名) : value(值)}};
”””
下一步是进行特征工程,把数据处理成计算机能看懂的鸭子
# 4、特征工程
# 1)实例化两个转换器
transfer = DictVectorizer()
# 2)使用转换器
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
“““
注:以上x_test是用transform方法,是应为fit_transform方法实际上可以分为两个方法,
一个是fit,一个是transform,fit是用来计算数据的标准差和平均数,transform是用来
转化数据的,在第一次使用fit_transform时,transfer里面已经通过fit得到了x_train
的标准差和平均值了,为了数据标准化更加真实,所以x_test也要用一样的标准差和平均值,
这就是x_test使用transform的原因
”””
最后就是使用决策树算法了
# 5、决策树预估器流程
# 实例化预估器
es = DecisionTreeClassifier(criterion="entropy")
# 添加网格搜索和CV
es = GridSearchCV(es,param_grid={"max_depth":[1,2,3,4,5,6,7,8,9]},cv=3)
# 6、模型评估
# 使用预估器
es.fit(x_train, y_train)
# 查看准确率
print(es.score(x_test, y_test["Survived"]))
# 查看最佳数据
print("最佳深度:",es.best_params_)
print("最佳成绩:",es.best_score)
另外一个就是也可以用随机森林的算法
# 5、随机森林预估器流程
# 使用随机森林进行解决
est = RandomForestClassifier()
# 添加网格搜索和CV
est = GridSearchCV(est,param_grid={"n_estimators":[10,20,40,80,160,320,640,1280]},cv=3)
# 使用
est.fit(x_train, y_train)
# 6、模型评估
# 查看准确率
print(est.score(x_test, y_test["Survived"]))
# 查看最好参数
print("最好的树数量:",est.best_params_)
print("最佳成绩:",est.best_score_)
如此下来,我们便完成了一个关于泰坦尼克号乘客生存预测的模型辣!
(ps:该随笔是作者一边学习一边写的,里面有一些自己的拙见,如果有错误或者哪里可以改正的话,还请大家指出并批评改正!)
上一篇:Redis持久化
下一篇:软件开发项目文档系列之十二如何撰