机器学习用途比较多,主要可以划分为3类。
第一类是分类:可以用来进行类型预测,比如是否是广告邮件,垃圾短信,花的种类,动物种类等。
第二类是回归:可以用来进行数值预测。比如预测房价,股票等。
第三类是聚类:用于划分群体。比如哪些是对这个商品的高意向群体,哪些是低意向的等。
机器学习之所以可以做到上面的这些事情,因为有很多的数据给他学习,通过这些数据,它就可以总结出经验来,也就是所谓的模型,直白点说就是一个数学公式。有了数学公式之后,再来预测分类是不是就很简单了。
比如 告诉你一个 数学公式:y=2x-1,然后为你x=100的结果值是多少,带进去就可以算出来了,2*100-1=199。
今天就通过自己推到一个数学公式来理解一下机器学习是怎样工作的,具体的机器学习算法,是通过scikit-learn这个库提供的,我只是拿来使用。
下面就用 y = 2x-1这个公式作为案例。
获取数据
首先需要有数据给我们训练,这里没有实际数据,只能自己造数据。
image用matplotlib显示图形,通过图表可以看出,我们造出来的数据是线性的,其实就是y = 2x-1这个公式来的。
image前面的过程是主要为了获得数据,现在我们是不知道x和y的关系的。下面有一个表格,里面的根据x,y的数据值,找到它们对应的关系,从而推导出当x=100时,y等于多少?
image因为我们知道它们的关系是直线关系,通过解方程的方法是很简单的,假设y=ax+b,列两个方程就可以求出结果来了。
如果不符合直线方程,那我们可能就无法假设一个公式了,因为公式可能为y=ax2+bx+c或者其它的幂函数,指数函数,三角函数呢?这个问题这里就先不展开了,之后通过拟合来详细探讨这个问题。( 拟合解释:形象的说,拟合就是把平面上一系列的点,用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。)
下面继续刚才我们的问题,前面构造的数据刚好是符合直线方程的,除了直接通过方程来解决,还可以使用我们的机器学习中的线性回归算法搞定。
训练模型
先准备好数据,这里刚好是x,y,x需要先转换一下维度,之后放到线性模型里面,提供模型数据训练就可以得出模型的系数了。
image上面的数据刚好是线性的,下面我们把数据手动改动一下,让我们的y数据不按严格的线性规律,改完效果如下。
image现在如果还是用解方程的思路,可能就会出现带入不同的数据,会得到不同的系数,那到底那个更符合呢?
让我们通过训练模型得出答案。
image模型训练出来了,下面通过这个模型去看看实际预测出的结果值和原来的对比一下。
image再查看一下均方根误差,总体误差在1.158左右,还算是不错的。
image通过这样的方法,我们就可以查找出一堆数据的一个关系了。有了这个模型,我们也可以去预测当个数值或者未来数据的一个走势了。
上面的机器学习过程还不是很严谨,并没有将数据集划分为训练集和测试集,正常的需要先划分数据集,一般按照7:3比例分成训练集和测试集,之所以要这样是因为训练出模型后,需要去验证模型的好坏,通过测试的结果与实际结果作比较,可以根据需要决定是否再去调整模型。
(全文完)
长按二维码,加关注!叶子陪你玩
欢迎转载,转载请注明出处!
欢迎关注公众微信号:叶子陪你玩编程
分享自己的python学习之路
网友评论