《Python数据分析与挖掘实战》学习笔记(二)

2019.2.25开始学习-2019.3.2结束学习(第三章&第四章)

**·**2019.2.25_第三章P33-P45
关于P36的代码清单3-1,完全照写出现错误,按照方法 https://blog.csdn.net/qq_36142336/article/details/78776426 得以解决,箱型图的意思基本明白了,但代码还是有很多看不懂的参数,特别是for循环是如何调试出来的也不明白。
《Python数据分析与挖掘实战》学习笔记(二)_第1张图片
(???)缺失值的个数为1是怎么看出来的不明白,以及异常值为何为7而不是8。

**·**2019.2.26_第三章P45-P52
关于P46的代码清单3-3,按照原句写会出现无属性错误:‘Series’ object has no attribute ‘sort’,根据博客 https://blog.csdn.net/jacke121/article/details/79089780/ 提供的方法,将语句data.sort(ascending = False)改为data.sort_values(ascending = False)漂亮。

《Python数据分析与挖掘实战》学习笔记(二)_第2张图片
(???)上一篇学习笔记没明白annotate是注释函数,在这里特意将其用法展现出来,参见 https://blog.csdn.net/helunqu2017/article/details/78659490 虽然代码中的有些参数我还是不明白。

关于P49代码清单3-4中的相关系数函数只能三选一进行输出,而不是像清单中那样把三个函数写在一起。为了便于查看和展示,我将其分别展示,结果如下:
《Python数据分析与挖掘实战》学习笔记(二)_第3张图片
由于缺乏一定的数理统计知识,我查了一下Pearson相关系数的具体数学表达式和学习者的一些理解,参见知乎问答 https://www.zhihu.com/question/19734616 我摘取一部分精华与大家分享。

  1. ‘其实Pearson相关系数就是cos计算之前,两个向量都先进行中心化。中心化就是:对每个向量,先计算所有元素的平均值avg,然后向量中每维度的值都减去这个avg,得到的这个向量叫作被中心化的向量。机器学习,数据挖掘要计算向量余弦相似度的时候,由于向量经常在某个维度上有数据的缺失,预处理阶段都要对所有维度的数值进行中心化处理。’]
  2. ‘Pearson相关系数是余弦相似度在维度缺失情况下的一种改进。’
  3. ‘在数据标准化(μ=0,σ=1)后,Pearson相关性系数、Cosine相似度、欧式距离的平方可认为是等价的’

对于spearman秩相关系数,我也查了一些资料。

  1. ‘spearman相关系数被定义成等级变量之间的Pearson相关系数。’
  2. Spearman秩相关系数经常被称为非参数相关系数,这具有两层含义:第一,只要在X和Y具有单调的函数关系的关系,那么X和Y就是完全Spearman相关的,这与Pearson相关性不同,后者只有在变量之间具有线性关系时才是完全相关的。另外一个关于Spearman秩相关系数的非参数性的理解就是样本之间精确的分布可以在不知道X和Y的联合概率密度函数时获得。详见原文:https://blog.csdn.net/liuyuan_jq/article/details/52542211

· 2019.2.27_第三章P52-P62
关于P52计算随机矩阵的协方差矩阵,我摘录了博客(https://www.cnblogs.com/terencezhou/p/6235974.html)中的几句话作为学习笔记:‘对多维随机变量X=[X1,X2,X3,...,Xn]T,我们往往需要计算各维度两两之间的协方差,这样各协方差组成了一个n×n的矩阵,称为协方差矩阵。协方差矩阵是个对称矩阵,对角线上的元素是各维度上随机变量的方差。’
实际代码运行出来的协方差矩阵也确实是对称矩阵,符合理论分析。但这与书中给出的运算结果不同,此处我认为是书中给出的结果有误(###)。
《Python数据分析与挖掘实战》学习笔记(二)_第4张图片
《Python数据分析与挖掘实战》学习笔记(二)_第5张图片
关于P54页的实例,当输入pd.rolling_sum(data,2)时会报错module ‘pandas’ has no attribute ‘rolling_sum’,我猜想原因是版本问题,3.x版本已经不是如此书写了,参见官方提供的函数文档
https://pandas.pydata.org/pandas-docs/version/0.23/generated/pandas.DataFrame.rolling.html 我将句子改为data.rolling(2).sum()就没有问题了。

(???)关于P58页的实例,我不明白代码
x = pd.Series(np.exp(np.arange(20))) x.plot(label = u'原始数据图',legend= True) plt.show()
如何就产生了一个二维图形,也不明白后续的y是如何突然就出现又不报错的。
《Python数据分析与挖掘实战》学习笔记(二)_第6张图片
**·**2019.2.28_第四章P61-P65
(???)关于P63页的代码清单4-1,按照书中所写输入代码,却出现警告,然而我不是非常清楚为什么会出现这样的警告(与此同时,代码部分内容我还不是很理解,还没摸清python数据类型和写法的套路)。但我核对了一下结果,拉格朗日插补数据无误。
《Python数据分析与挖掘实战》学习笔记(二)_第7张图片

· 2019.3.1_第四章P65-P73
新的三月要元气满满呀~!
(???)关于P67的代码清单4-2,代码本身运行出来没有什么问题,但就我画出来的几个数据,为何通过离差标准化后,代码运算和理论计算结果不同?仔细观察可以发现,data数据的最大值为2863,最小值为-1283,则[3,1]=596在经过处理之后的计算值为(596+1283)/(2863+1283)= 0.4532,但是代码运算出来竟然是1.000?其他标橙的数据也是如上疑问。
《Python数据分析与挖掘实战》学习笔记(二)_第8张图片

之后还使用到了ceil函数,我也将其解释放于此作为学习:
``np.ceil 函数返回输入值的上限,即对于输入 x ,返回最小的整数 i ,使得 i> = x

关于P73代码清单4-5,说实话这一节讲小波变换我是云里雾里(以后具体遇到问题再作深入了解),但代码为何没有运行出来可视化的结果呢?(书中给书的注释是#返回结果为level+1个数字,第一个数组为逼近系数组,后面的依次是细节系数数组)
《Python数据分析与挖掘实战》学习笔记(二)_第9张图片

· 2019.3.2_第四章P74-P82
(???)关于P76代码清单4-6的分析,书中说‘从结果可以看出特征方程有7个特征根。’
《Python数据分析与挖掘实战》学习笔记(二)_第10张图片
但为什么我从运行结果来看是有8个特征根呢,此处存疑。

你可能感兴趣的:(《Python数据分析与挖掘实战》学习笔记(二))