作者回复: Good Job
编辑回复: 总结的很好。需要注意的是,transform和fit_transform虽然结果相同,但是不能互换。因为fit_transform只是 fit+transform两个步骤合并的简写。而各种分类算法都需要先fit,然后再进行transform。所以如果把fit_transform替换为transform可能会报错。
编辑回复: 训练集train_data中Fare没有缺失值,测试集test_data中Fare有缺失值。
通过print(test_data.info()) 可以看到,所以train_data可以补用填充,而test_data需要对缺失值做处理。
作者回复: 你可以看下输出的决策树的图形,有几个数值你需要了解:
比如类似 X[7]<=0.5 这种就是告诉你这个节点,选择的属性是X[7],阈值是0.5。
当<=0.5的时候,决策进入到左子树,当>0.5的时候,决策进入到右子树。
entropy实际上代表了信息不纯度,这个数值越大,代表纯度越低。
samples代表的是这个节点的样本数,比如samples=891,就代表这个节点一般有891个样本。然后value这个数组会告诉你这个样本集是如何分布的,比如value=[549,342],即891个样本,有549个为True,也就是X[7]<=0.5,还有342个样本为False,即这些样本的X[7]>0.5
好了,然后继续上面的分裂过程,直到叶子节点,纯度越来越高,最终归为同一个类别时,纯度最高,entropy=0,此时样本都为同一个类别,也就是按照这条线路可以得到的最终分类结果。
所以你能看到:决策树的使用,就是从根节点开始,然后属性划分,当<=阈值时走左子树,>阈值时走右子树,最终在叶子节点可以得到分类的结果。你指的每个方框里的entropy, samples, vale都是中间的计算结果。
这样解释决策图的使用不知道是否理解,希望对你能有帮助。
编辑回复: 在数据探索的过程中,我们可以通过打印train_data.info()和test_data.info()得出。
你能看到训练集train_data中一共有891行数据,其中Cabin有204个非空数据。同理,测试集test_data中一共有418行数据,其中Cabin有91个非空数据。所以Cabin缺失率分别是77%和78%。同理,你能看到训练集和测试集中的Age字段有缺失值(即空值),测试集中的Fare有缺失值。
作者回复: Good Job
编辑回复: 多谢支持,后续有和数据相关的课程。
数据分析中的知识点比较多,同时也需要一些基础。所以课程中,有些基础的内容会省略,虽然专栏前面有3节关于python的内容,不过还是需要一定的python基础。另外每篇文章篇幅有限,我会尽量在讲解算法使用的基础上,进行一个完整的项目交付。很多使用细节和体会,还需要你通过日常的学习慢慢进行总结。
作者回复: 不错的分享
作者回复: Good Job
编辑回复: 我上传了完整的代码到GitHub上。你可以先自己运行一遍。如果有哪个模块不理解的,你可以加到微信群里,和我单独交流。也可以直接加我微信 cylearn123。
编辑回复: 对的,如果大家刚接触sklearn,这个是需要注意的地方之一。
作者回复: 嗯 在数据探索阶段可以打印train_data.info()和test_data.info()进行查看
作者回复: # 决策树预测
pred_labels = clf.predict(test_features)
作者回复: 可以的