1、【思考】这些库的作用是什么呢?你需要查一查
import seaborn as sns #
from IPython.display import Image #
2、载入我们提供清洗之后的数据(clear_data.csv),大家也将原始数据载入(train.csv),说说他们有什么不同
通过对比两个数据,将原数据中survived列取出作为有监督学习中Y,同时删去name列,并将Sex和Embarked两列通过独热编码形成值。
这里自己认为缺少了一步,哪些参数和生存相关呢?没有进行一个相关判断。
3、划分数据集的方法有哪些?
在机器学习建模过程中,通行的做法通常是将数据集分为训练集和测试集。测试集是与训练独立的数据,完全不参与训练,用于最终模型的评估。
在训练过程中,经常会出现过拟合的问题,就是模型可以很好的匹配训练数据,却不能很好在预测训练集外的数据。如果此时就使用测试数据来调整模型参数,就相当于在训练时已知部分测试数据的信息,会影响最终评估结果的准确性。通常的做法是在训练数据再中分出一部分做为验证(Validation)数据,用来评估模型的训练效果。
验证数据取自训练数据,但不参与训练,这样可以相对客观的评估模型对于训练集之外数据的匹配程度。模型在验证数据中的评估常用的是交叉验证,又称循环验证。它将原始数据分成K组(K-Fold),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型。这K个模型分别在验证集中评估结果,最后的误差MSE(Mean Squared Error)加和平均就得到交叉验证误差。交叉验证有效利用了有限的数据,并且评估结果能够尽可能接近模型在测试集上的表现,可以做为模型优化的指标使用。
sklearn中切割数据集的方法为train_test_split:
train_test_split (*arrays,test_size, train_size, random_state=None, shuffle=True, stratify=None)
arrays:特征数据和标签数据(array,list,dataframe等类型),要求所有数据长度相同。
test_size / train_size: 测试集/训练集的大小,若输入小数表示比例,若输入整数表示数据个数。
random_state:随机种子(一个整数),其实就是一个划分标记,对于同一个数据集,如果- random_state相同,则划分结果也相同。
shuffle:是否打乱数据的顺序,再划分,默认True。
stratify:none或者array/series类型的数据,表示按这列进行分层采样。
4、为什么使用分层抽样,这样的好处有什么?
保证训练数据集、测试数据集中基本覆盖所有的数据类型,使得划分的数据没有偏差。
5、为什么线性模型可以进行分类任务,背后是怎么的数学关系
形成分类曲线,背后的数学关系主要是梯度下降算法。
6、对于多分类问题,线性模型是怎么进行分类的
one-versus-Rest(OvR)