【数据分析入门】Task 05 数据建模及模型评估
第三章 模型搭建和评估
3.1 模型搭建
在对数据进行清洗后下一步就是使用处理好的数据采用某种预测模型进行建模,在建模后我门还需要对模型做进一步的评估
3.1.1 数据导入及介绍
采用的数据为清洗后的泰坦尼克号数据集,和原始的数据相比有如下几点变动
- 清洗后的数据集为11列,原数据位12列
- 少了姓名(对于预测是否存活没啥用用)、票的详细信息(对于预测是否存活没啥用用)、舱位等级(缺失太多,直接不要了)
- 性别、出发地用独立热编码表示
“”"
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from IPython.display import Image
%matplotlib inline
"""
ipython是一个python的交互式shell,比默认的python shell好用得多
,支持变量自动补全,自动缩进,支持bash shell命令,内置了许多很有
用的功能和函数。ipython将能够使我们以一种更高的效率来使用python。
同时它也是利用Python进行科学计算和交互可视化的一个最佳的平台
在这里主要使用IPython来导入图片,例如:Image('sklearn.png')
"""
#Matplotlib中plt.rcParams用于设置图像细节
#更多设置见https://www.cnblogs.com/douzujun/p/10327963.html
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签,SimHei为黑体,也可以设置为其他字体
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
plt.rcParams['figure.figsize']=(10,6) #设置图片大小
#载入清洗后的数据集
data=pd.read_csv(r'E:\数据分析\clear_data.csv')
data.head()
3.1.2 模型搭建
3.1.2.1 概述
- 处理完前面的数据我们就得到建模数据,下一步是选择合适模型
- 在进行模型选择之前我们需要先知道数据集最终是进行监督学习还是无监督学习
- 模型的选择一方面是通过我们的任务来决定的。
- 除了根据我们任务来选择模型外,还可以根据数据样本量以及特征的稀疏性来决定
- 刚开始我们总是先尝试使用一个基本的模型来作为其baseline,进而再训练其他模型做对比,最终选择泛化能力或性能比较好的模型
3.1.2.2 sklearn的算法选择路径
scikit-learn 是基于 Python 语言的开源的机器学习工具,是一种简单高效的数据挖掘和数据分析工具,可建立在 NumPy ,SciPy 和 matplotlib 上
sklearn 中文文档:http://www.scikitlearn.com.cn/
3.1.2.3划分训练集和测试集
划分数据集的方法有多种
(1)train_test_split方法
train_test_split
是交叉验证中常用的函数,功能是从样本中随机的按比例选取训练集和测试集,需要导入包from sklearn.model_selection import train_test_split
使用方法:
X_train, X_test, y_train, y_test = train_test_split(features, result, test_size = 0.2, random_state = 0, stratify = result)
参数 | 作用 |
---|---|
train_data | 所要划分的样本特征集 |
train_target | 所要划分的样本结果 |
test_size | 样本占比,如果是整数的话就是样本的数量 |
random_state | 随机数的种子,即该组随机数的编号,在需要重复试验的时候,通过设置该参数保证得到一组一样的随机数,不填的话默认值为False,这个时候虽然每次切分的比例虽然相同,但是切分的结果不同 |
stratify | 保持测试集与整个数据集里result的数据分类比例一致,比如result中有0.3属于A类,0.7属于B类,那么切分数据集的时候,数据集例分类比例也是这样的 |
***
任务一
使用train_test_split所给数据集的切割训练集和测试集
***
#调用相关模块
from sklearn.model_selection import train_test_split
# 一般先取出X和y后再切割,有些情况会使用到未切割的,这时候X和y就可以用,x是清洗好的数据,y是我们要预测的存活数据'Survived'
X = data
y = train['Survived']
#对数据集进行切割
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=0)
# 查看数据形状
X_train.shape, X_test.shape
【思考】:什么情况下切割数据集的时候不用进行随机选取