机器学习系统设计--1.4

Building Machine  Learning Systems with Python

-------------------

代码:

https://github.com/Leechen2014/1400OS_01_Codes

author 振在远方

---------------------

偶然间得到一本书:<<机器学习系统设计>> , 于是有了想看的冲动. 并且在github上上传了相关代码. 希望通过这本书可以打开通往机器学习的大门.

---来自一个在机器学习道路上的学前班学生的独白

整个代码中比较重要的就是这个函数了:

因此就以这个function展开话题:

程序流程图:

通过阅读我们发现:

这个函数主要做了以下几步:

  1. 接收原始数据X Y 以及创建的模型
  2. 绘制出原始数据的点分布
  3. 根据模型(如果有的话)绘制出拟合函数
  4. 设置图标的其他属性并且保存

1.1 接收原始数据X Y 以及创建的模型

在解析之前,有必要先说说 x , y 从哪里来的? x,y的数据结构是什么样的? x y代表什么?

1  通过阅读代码可以知道  x,y 是在预处理的时候获取的,如下图所示

12-14行可知

data是二维的矩阵 ;由于tsv文件的数据是以一个tab键(制表符)作为分隔符的,xy 就是从这个文件中读取过来的

可以这样读取:

data_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), "..", "data")

data = sp.genfromtxt(os.path.join(data_dir, "web_traffic.tsv"), delimiter=‘\t‘)

读取之后,的内容是通过sp.genfromtxt()函数转化为矩阵了. 因此可以通过对矩阵的操作读取文件中第一列和第二列:

26-27: x,y 是从data中获取的两列数据。 这样一来就知道x y的数据结构是向量vector/array

x = data[:, 0]

y = data[:, 1]

24-26 : 是把原始数据中的not a number 元素剔除了

x = x[~sp.isnan(y)]

y = y[~sp.isnan(y)]

1.2 绘制出原始数据的点分布

Python 的plt.scatter(x[] , y[]) 用于在plt对象中绘制点,其坐标为   (x[i],y[i]) , 这种写法和C/matlab的风格很像

plt.scatter(x, y) # make a scatter plit of x y , where x and y are sequnce like obj of the same length

绘制图表上的x, y轴的说明:

plt.xlabel("Time")

plt.ylabel("Hits/hours")

其实就是这里:

接下来就是绘制x 和y 轴想的标志点

plt.xticks([w * 7 * 24 for w in range(10)], [‘week %i‘ % w for w in range(10)]) #get or set x-limites of current tick localti

plt.xticks(dis[] , name[]) 这函数接受两个参数, 第一个参数指明坐标 , 第二个参数指明对应的名称; 其实就是这个:

plt.autoscale(tight=True) #设置图片自动缩放

plt.ylim(ymin=0) #设置y轴的最小值

if ymax:  #设置y轴的最大值

plt.ylim(ymax=ymax)

if xmin: # 设置x轴的最小值

plt.xlim(xmin=xmin)

plt.grid(True, linestyle=‘-‘, color=‘0.75‘) # 设置是都绘制网格,以及网格的颜色

plt.savefig(fname) # 保存图片

1.3 根据模型(如果有的话)绘制出拟合函数

这小结中需要了解:  模型怎么建立的?  如何使用模型?

1.3.1 如何使用模型?

首先看看如何使用模型来绘制曲线:

通过阅读 我们知道 这个模型应该线性模型 , 因为:
             plt.plot(mx, model(mx), linestyle=style, linewidth=2, c=color)# 这句话是绘制一条曲线, 第一个参数是自变量,第二个参数是因变量,因变量是由模型model()根据自变量产生的 。 并且指定曲线的风格和曲线的宽度 颜色

最后绘制曲线的标志 :

这句话产生的效果如下:

PS 此处的函数解析详见:

http://matplotlib.org/api/pyplot_summary.html#

https://docs.scipy.org/doc/numpy/reference/generated/numpy.poly1d.html

https://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html

https://docs.scipy.org/doc/scipy/reference/genindex.html

1.3.2 模型怎么建立的?

这些模型是怎么建立的呢? 又是如何实现的? how implications?  我想这个应该是大家最关心的 , 因为特意放在最后:

先说说how implimention 其实思想很简单:

我们在高中学过线性拟合的知识 , 这个就是利用线性拟合的方式来制造曲线......

不会? 没关系, python已经提供了API :

polyfit是拟合的意思, 其中这个里面的第一, 二个参数中是原始中点的x , y 轴坐标. 第三个参数是自由度(x的最高次方). full是设置返回值的性质,如果是false返回的是拟合函数的系数. 如果是ture 则会把与这个系数相关所有内容返回,比如 二次方程的系数, 误差, ,,,,

具体详见  https://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html

你看看 , 这个程序说白了 是计算了一个咱们高中学的一个线性拟合相关的算法( 大学的概率论中也有提到) , 所以数学很重要

---------------------

最后说说我的感悟:

说实话, 一个一个字coding确实很不容易, 认为比较简单的部分就省略了.  对我这五个python初学者来说, 把python中的函数理清楚比较实在些, 所以在整理的时候会提更多的倾向于讲解python中的函数

----------------------------

问几个问题, 希望看到的同学可以留言:

1 这个程序算是机器学习么?

2 机器学习的有监督学习中往往会说label (标记)和提取特征值(extra feature)

时间: 2024-10-12 14:17:38

机器学习系统设计--1.4的相关文章

《机器学习系统设计》之应用scikit-learn做文本分类(上)

前言: 本系列是在作者学习<机器学习系统设计>([美] WilliRichert)过程中的思考与实践,全书通过Python从数据处理,到特征工程,再到模型选择,把机器学习解决问题的过程一一呈现.书中设计的源代码和数据集已上传到我的资源:http://download.csdn.net/detail/solomon1558/8971649 第3章通过词袋模型+K均值聚类实现相关文本的匹配.本文主要讲解文本预处理部分内容,涉及切分文本.数据清洗.计算TF-IDF值等内容. 1. 统计词语 使用一个

Stanford机器学习---第七讲. 机器学习系统设计

本文原始版本见http://blog.csdn.net/abcjennifer/article/details/7834256 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.所有内容均来自Standford公开课mach

《机器学习系统设计》之k-近邻分类算法

前言: 本系列是在作者学习<机器学习系统设计>([美] WilliRichert)过程中的思考与实践,全书通过Python从数据处理,到特征工程,再到模型选择,把机器学习解决问题的过程一一呈现.书中设计的源代码和数据集已上传到我的资源:http://download.csdn.net/detail/solomon1558/8971649 第2章通过在真实的Seeds数据集构建一个k-近邻分类器,从而达到一个较好的分类效果.本章主要涉及数据可视化分析.特征和特征工程.数据归一化.交叉验证等知识内

[机器学习] 1、《机器学习系统设计》学后总结

<机器学习系统设计>是一本不错的机器学习实战入门的书籍.第一章介绍了用于机器学习的Python相关工具,接下来分别用实战型例子讲解聚类.分类.回归.模式识别.降维等机器学习的主要的几种方法. 机器学习就是教机器自己来完成任务,机器学习的目标就是通过若干示例让机器学会完成任务. 像其他工程一样,设计一个机器学习系统工作一般花在一些极其平凡的任务上: (1)读取和清洗数据: (2)探索和理解输入数据: (3)分析如何最好地将数据呈现给学习算法: (4)选择正确的学习算法和模型: (5)正确地评估性

《机器学习系统设计》之数据理解和提炼

前言: 本系列是在作者学习<机器学习系统设计>([美] Willi Richert)过程中的思考与实践,全书通过Python从数据处理,到特征工程,再到模型选择,把机器学习解决问题的过程一一呈现.书中设计的源代码和数据集已上传到我的资源http://download.csdn.net/detail/solomon1558/8971649. 第1章通过一个简单的例子介绍机器学习的基本概念,揭示过拟合的风险,帮助我们增强理解和提炼数据的能力. 1. 背景介绍 假设互联网公司MLAAS为所有Web访

《机器学习系统设计》之应用scikit-learn做文本分类(下)

前言: 本系列是在作者学习<机器学习系统设计>([美] WilliRichert)过程中的思考与实践,全书通过Python从数据处理,到特征工程,再到模型选择,把机器学习解决问题的过程一一呈现.书中设计的源代码和数据集已上传到我的资源:http://download.csdn.net/detail/solomon1558/8971649 第3章通过词袋模型+K均值聚类实现相关文本的匹配.本文主要讲解K-均值聚类相关知识以及在20newsgroup数据集上使用K-均值聚类进行测试.     相关

机器学习系统设计(Building Machine Learning Systems with Python)- Willi Richert Luis Pedro Coelho

机器学习系统设计(Building Machine Learning Systems with Python)- Willi Richert Luis Pedro Coelho 总述 本书是 2014 的,看完以后才发现有第二版的更新,2016.建议阅读最新版,有能力的建议阅读英文版,中文翻译有些地方比较别扭(但英文版的书确实是有些贵). 我读书的目的:泛读主要是想窥视他人思考的方式. 作者写书的目标:面向初学者,但有时间看看也不错.作者说"我希望它能激发你的好奇心,并足以让你保持渴望,不断探索

机器学习---吴恩达---Week6_2(机器学习系统设计)

Machine Learing System Design(机器学习系统设计) Ways to improve the accuracy of a classifier(提高分类器准确性的几个方法) Collect lots of data (for example "honeypot" project but doesn't always work)(收集大量数据,并不总是有用) Develop sophisticated features (for example: using e

《机器学习系统设计》学习笔记(1)

机器学习的目标:通过若干实例让机器学会完成任务. 统计学是机器学习专家经常研究的一个领域. 机器学习的方法不是瀑布式的过程,需要反复分析,探索,尝试. Python被作者认为是一种非常有效的建模语言. 一个观点:算法不是最花时间的,花时间的是: 1.读取和清洗数据. 2.探索和理解输入数据. 3.分析如何最好的将数据呈现给学习算法. 4.选择正确的模型和学习算法. 5.正确的评估性能. 观点:需要一些统计知识. 观点:数据和算法同样至关重要. --------------------------