网上找的机器学习的资料对于新手来说往往很难, 经常一上来就甩你一堆像外星文一样的公式方程,然后就把你满腔的学习热情给无情浇灭, 让你觉得是不是该回去学下数学再好好做人。笔者也是一样屡屡被虐,才略有领悟, 回过头来看,发现其实机器学习入门本来可以不这么艰难。 Python机器学习快速入门系列文章,希望能够以简单易懂、通俗而有趣的方式,把大家带入Machine Learning的世界。关注微信公众号“Tunky的实用主义”, 一边学习,一边分享。
1.猜数游戏
在正式进入线性回归之前,先玩一个猜数的游戏:
x= 1 , 3, 8, 9, 15 16
y= 2, 6.3, 15, 21, ? ?
依据X和Y的关系, 我们猜x=15, y可能会对应30左右, x=16,y可能会对应32左右
但我们会什么不会猜100, 或者其他更大的数, 因为肉眼判断的Y大概是X的2倍, 虽然有点误差, 但是整体方向上应该错不了。
y=2*x
这就是一个简单的线性回归, 你找到了一个系数2, 对于任何要预测的目标值, 你用输入值乘以系数2, 得到预测的结果。
2. 升级猜数游戏
现在我们加大猜数的难度, 把x这组数据替换成二维的数组, 也就是说, x=[0.5,1] 对应y是1, 求x=[6,15] 对应的y取值
0.5 1.4 3.7 4 6 6.1
x= 1 , 3, 8, 9, 15 16
y= 2, 6.3, 15, 21, ? ?
这就是典型的线性回归问题, 我们先暂时不回答, 相信看到后面就能解答。
3. 线性回归数学定义
在点阵里面找1条直线, 计算所有点到这条直线的距离, 如果距离之和最短, 那么这条直线就是需要的结果。对于需要预测的y的值, 找到x在直线上所对应的y值, y=x * w 就是预测结果(w就是直线)
因此, 如果需要解答猜数游戏, 那么首先就要找到 w 的值。
这种场景下, 计算w的值, 前辈们已经推导出了公式:
假设x和y都是矩阵, 那么这个系数w叫做回归系数, 取值为:
w = (xT * x)-1 *xT * y
至于为什么公式是这么写的, 我们不需要操心, 就像计算圆形的面积是是( πr2 )一样不需要我们再推导一遍。
通俗翻译过来就是:(下面这段话看不懂赶紧复习系列2)
- x矩阵的转置乘以x矩阵
- 对这个新矩阵的结果取逆矩阵
- 逆矩阵再乘以x矩阵的转置
- 最后乘以y矩阵。
4. 回归系数的Python实现
这堆数学概念看起来超复杂, 但是用python来实现, so easy!
环境搭建参见系列1文章
import numpy as np
#x矩阵
xMatrix=np.mat([
[0.5, 1 ],
[1.4 3 ],
[3.7, 8 ],
[4, 9 ]
] )
#y矩阵
yMatirx=np.mat([
[2 ],
[6.3],
[15 ],
[21 ]
])
[0.5, 1 ],
[1.4 3 ],
[3.7, 8 ],
[4, 9 ]
] )
#y矩阵
yMatirx=np.mat([
[2 ],
[6.3],
[15 ],
[21 ]
])
#实现公式: 详细解释参见系列2文章
w=(xMatrix.T * xMatrix).I * (xMatrix.T * yMatrix)
5. 使用回归系统进行预测
把需要预测的值整理成矩阵
newxMatrix=np.mat([
[6, 15 ],
[6.1 16 ]
[6.1 16 ]
])
#用回归系数计算
predictYMatrix=newxMatrix * w
print predictYMatrix
得到结果: 47.71369295 , 56.79128631 就是那2个猜出来的y值
6. 绘图查看数据分布和预测结果
绘图详细介绍参见系列3文章
import matplotlib.pyplot as plt
newxMatrix=np.mat([
[0.5, 1 ],
[1.4, 3 ],
[3.7, 8 ],
[4, 9 ] ,
[6 , 15 ],
[6.1 , 16 ]
])
[0.5, 1 ],
[1.4, 3 ],
[3.7, 8 ],
[4, 9 ] ,
[6 , 15 ],
[6.1 , 16 ]
])
#红色为预测值
newyMatrix=np.mat([
[2 ],
[6.3],
[15 ],
[21 ],
[2 ],
[6.3],
[15 ],
[21 ],
[47.7 ],
[56.7 ],
[56.7 ],
])
#把newxMatrix转换成一维数组, 每个值除以该列的平均值(绘图表现方便,无其他意义)
xMeanMatrix= (newxMatrix[:,0]/newxMatrix[:,0].mean() + newxMatrix[:,1]/newxMatrix[:,1].mean())
plt.figure() #创建图表
x=xMeanMatrix[:,0].flatten().A[0]
y=newyMatrix[:,0].flatten().A[0]
plt.scatter(x,y) #画点
plt.plot(x,y) #画线
x=xMeanMatrix[:,0].flatten().A[0]
y=newyMatrix[:,0].flatten().A[0]
plt.scatter(x,y) #画点
plt.plot(x,y) #画线
(图中不是直线,是因为把二维矩阵合并成了一维来绘图了)
7. SKLearn无脑实现线性回归
sklearn是个机器学习非常好的包, 好到使用者根本不需要了解什么算法, 算法特性,公式等。 上手直接预测:
步骤:
- 输入x, y数据训练
- 输入newX, 输出预测的newY值
import sklearn
#x矩阵
xMatrix=np.mat([
[0.5, 1 ],
[1.4 3 ],
[3.7, 8 ],
[4, 9 ]
] )
#y矩阵
yMatirx=np.mat([
[2 ],
[6.3],
[15 ],
[21 ]
])
[0.5, 1 ],
[1.4 3 ],
[3.7, 8 ],
[4, 9 ]
] )
#y矩阵
yMatirx=np.mat([
[2 ],
[6.3],
[15 ],
[21 ]
])
#预测输入xp矩阵
xpMatrix=np.mat([
[6 , 15 ],
[6.1 , 16 ]
])
classifier=LinearRegression()
classifier.fit(xMatrix,yMatrix)
yPredict=classifier.predict(xpMatrix)
print yPredict
[6 , 15 ],
[6.1 , 16 ]
])
classifier=LinearRegression()
classifier.fit(xMatrix,yMatrix)
yPredict=classifier.predict(xpMatrix)
print yPredict
计算得出 51.66894737 , 62.92736842 , 虽然和我们自己实现预测的值47 和 56 有些差异, 但大方向是基本一致, 也算相互验证。
相关推荐
随着统计学的发展,统计学习在机器学习中占据了重要地位,支持向量机(SVM)、决策树和随机森林等算法的提出和发展,使得机器学习能够更好地处理分类、回归和聚类等任务。进入21世纪,深度学习成为机器学习领域的...
吴恩达传统机器学习作业代码(python jupyter):线性回归、逻辑回归、神经网络、SVM、Kmeans决策树和自动调参数 吴恩达老师的机器学习课后习题Python 包含有8个单元,附带数据集,轻松入门机器学习。 适合人工智能...
机器学习3天快速基础入门教程:机器学习概述、特征工程、knn、朴素贝叶斯、决策树、随机森林、线性回归、非线性回归、逻辑斯蒂回归、k-means聚类算法
机器学习概述、特征工程、knn、朴素贝叶斯、决策树、随机森林、线性回归、非线性回归、逻辑斯蒂回归、k-means聚类算法
线性回归预测网店销售额的数据集
机器学习入门到精通50天,python代码编写,1.数据预处理 2.简单线性回归 3.多元线性回归 4.逻辑回归 5.k近邻法(k-NN) 6.支持向量机(SVM) 7.决策树 8.随机森林 9.K-均值聚类 10.层次聚类
《机器学习》编程作业 1——线性回归 《机器学习》编程作业 2——逻辑回归 《机器学习》编程作业 3——多类分类 《机器学习》编程作业 4——神经网络 《机器学习》编程作业 5——偏差与方差 《机器学习》编程作业 6...
人工智能机器学习入门,minist线性回归,图像识别预测分类
本数据适合于新手入门机器学习学习,可以作为机器学习的一元线性回归的实战来学习。 线性回归模型是利用线性拟合的方式探寻数据背后的规律。如下图所示,先通过搭建线性回归模型寻找这些散点(也称样本点)背后的...
Python3初学者机器学习 为机器学习的入门者提供多种基于实例的sklearn,TensorFlow以及自编函数(AnFany)的ML算法程序。只要数据格式和示例的中的一样,程序可灵活调用。 入门篇 线性回归(Linear Regression) ...
机器深度学习、基本概念、决策树算法、决策树应用、最邻近规则分类算法、最邻近规则KNN分类应用、支持向量机算法、神经网络算法、简单线性回归、多元线性回归、 kmeans算法和应用、hierarchical clustering 层次聚类...
学习建立和训练有监督的机器学习模型,用于预测和二元分类任务,包括线性回归和逻辑回归。 学习使用TensorFlow构建和训练一个神经网络来执行多类分类。应用机器学习开发的最佳实践,使您的模型泛化。学习将使用无...
05 机器学习入门算法实战-K近邻 06 线性回归算法 07 梯度下降与逻辑回归算法 08 项目实战:信用卡欺诈检测 09 决策树算法 10 随机森林与集成算法 11 项目实战-基于随机森林的气温预测 12 贝叶斯算法 13 项目实战-...
4.产品化一个机器学习模型牵涉许多考虑因素,不同于模型开发过程中的那些考虑因素:例如,如何同步地计算模型输入?每次得分时你需要记录什么信息?你如何确定生产环境下模型的性能?机器学习是我们日常接触到的许多...
21、数据可视化第三方库-scikitlearn 21.1 Pyplot绘图基础 21.2 线形图(折线图) 21.3 直方图 21.4 条形图 21.5 饼状图 21.6 散点图 ...24.2 线性回归算法 24.3 调用scikit-learn库实现房价预测
2017年最新机器学习入门与实战精品高清全套视频教程附讲义作业(anaconda2 4.3Pytyhon2.7 jupyter) 70课 课程介绍: 从基本的软件安装到必备的Python扩展讲起,然后对机器学习算法一一讲解,同时配合编程实操的实现...
线性回归的PyTorch实现 PyTorch框架入门案例,详情可参考博客:https://blog.csdn.net/didi_ya/article/details/121167881
线性回归是机器学习中的基础算法之一,属于监督学习中的回归问题,算法的关键在于如何最小化代价函数,通常使用梯度下降或者正规方程(最小二乘法),在这里对算法原理不过多赘述,建议看吴恩达发布在斯坦福大学上的...
西雅图Python 401d14课程大纲Advanced Python是对广泛使用Python的多个...线性回归第14类:数据可视化第15类:职业指导/ DSA-树木进阶主题第十六课:机器学习入门第17类:网页抓取第十八课:密码学第19类:自动化第20