找回密码
 立即注册
搜索

Python机器学习从0到1:从十余行代码看机器学习的套路

哟喔 2019-10-13 15:05:55 显示全部楼层 阅读模式
时下最火的专业就是人工智能了,能够没有之一。从国家的AI+战略规划,到企业界的AI赋能,再到中小学的人工智能的科普教育,一股AI的浪潮席卷整个社会。为什么不把握这个风口,让我们get这项技能以协助我们将来的事业也能飞起呢?

一、AI、机器学习与深度学习

相对于人工智能和深度学习,机器学习的知名度就没有那么高了。它们三者又有怎样的联络呢?简单说,深度学习是机器学习的一个范畴,而机器学习又是人工智能的一个范畴。

    看看人工智能的英文定义:Al is the field that studies the synthesis and analysis ofcomputational agents that act intelligently。它强调计算机系统可以像人类一样思索和举动。再看机器学习的定义:Field of study that gives computers the ability to learn without beingexplicitly programmed. 机器学习研讨的是在不借助人工编程的状况下计算机系统能自主学习的才能。例如,图像辨认中我们并不经过编程来告诉计算机猫的特征是什么,而是经过计算机本人从有动物类别标签的图片中本人学习得到如何判别图片中的动物是猫还是狗。机器学习的核心是,从数据中自动学出规律,而不是一个人拍脑袋定出来的。那深度学习又是什么呢?Deep Learning is a subfield of machine learning concerned with algorithms inspired by the structure and function of the brain called artificial neuralNetworks. 深度学习是一个自创了人工神经网络的一个机器学习的研讨框架。深度学习里的关键词 “Deep",可以了解为把很多简单的模型叠加而得到一个有深度的模型。举个例子,比如我们把一个神经网络叠加成多层结构的时分,得到的是深度神经网络;当我们把一个高斯混合模型叠加在一同得到了深度高斯混合模型;把SVM叠加在一同得到了深度SVM模。把一个模型叠加在一同弄成深度学习模型有什么好处呢?这样的模型会有更弱小的表达才能, 具有层次表示才能,全局泛化才能,迁移学习才能等。所以,它目前占据了机器学习范畴的半壁江山。

接上去,我们就进入机器学习这个主题。

P.S. 小编给大家整理了一些Python人工智能的材料,从入门到高级都有,关注头条号,私信回复“材料”获取,看下图。

二、机器学习的基础概念

首先,我们来看一下机器学习范畴两个大类,分别是监督学习和无监督学习。所谓监督学习,就是样本数据中有我们关怀的结果的标签y的机器学习算法。监督学习又可以分为分类和回归两个类别。y是延续数值变量的,就是机器学习中的回归成绩。例如,根据历史的产品销量y和影响要素x来预测将来产品的销量。y是团圆分类变量的,则属于分类成绩。这类成绩在业界更为常见。根据采集到的特征数据,来判别机器能否缺点,判别贷款央求者能否会逾期不还,辨认图片中的动物、音频中的说话者等等。在工业界和商业界运用里次要以监督学习为主。对于监督学习,拥有大量的例子,只需有标签,而且跟预测相关,都可以归类为监督学习。

跟监督学习相对照的就是无监督学习方法了,这种方法最大的特点是算法过程不依赖于数据的标签,由于数据集就没有标签。所以我们只能做一些分析性的工作,也就是把相似的物体聚集在一同。最经典的聚类算法叫做 K-means。在营销分析的客户细分和用户画像中就会用到无监督算法。

对于监督学习和无监督学习有哪些经典的算法呢?

三、机器学习的流程和代码示例

学习什么课程,都有它的方法论和套路。那我们就看一下机器学习的套路。

从流程图可以看出机器学习的等待的数据源。典型的机器学习包括数据预处理、特征工程、建模和验证4个环节。数据的预处理包括对原始数据的审核、清洗和整合等过程。原始数据往往有噪声,且来自不同的数据库系统。辨认这些噪音如人为的数据输入错误、异常值、缺失值,再运用迷信规范的方法处理这些噪音,将不同数据库的数据停止衔接整合。这是一个费时费力的活。但对机器学习的质量至关重要。

经过数据预处理得到整洁的数据集后,就可以停止特征工程,就是抽取出对关注的结果有重要影响的特征变量x。例如,要分析信誉卡用户能否会有逾期行为,能够的特征变量包括他的年龄、职业、支出程度、历史还款行为等。

之后,就末尾停止建模了。在建模过程中有两项重要的工作(1)调参(2)改造。尝试各种机器学习模型算法,看哪个是最优的。确定模型后调整参数,使得模型预测效果最佳。若模型与实践成绩不分歧,还需求对模型停止针对成绩情形的改造。

最后一步是模型的验证。这里需求确定恰当的模型评价标准如回归成绩的均方误差、分类成绩的准确度、AUC值等。将数据集划分为训练集和测试集。在训练集上拟合模型,在测试集上验证模型的泛化才能。当模型不能达到预定的要求标准时,要审查之前的每个环节包括数据预处理、特征工程和模型选择以找出成绩所在,并停止改进。如此往复,直至达到验证的要求。

代码环节

好了,到了看python代码了解在python机器学习这个大众等待的环节了。

我们要处理的是一个回归成绩:如何根据不同人的身高体重的数据来预测某个身高的人他的体重。

在表格里我们给出了正常男生20岁时标准体重。第一行表示的是身高,第二行代表的是体重。我们希望经过这个数据来搭建回归模型使得之后给定一个身高即可以预测出标准体重。

这个成绩,特征变量是身高,而预测变量是体重。

从机器学习的工作流程看,数据曾经规范,特征变量只要一个,所以我们直接进入建模环节。我们将运用sklearn库来完成建模。Sklearn库是python中最火的机器学习的库,没有之一。理由就两个功能弱小,操作简单。

我们要完成如下三项工作:

第一部分是数据的导入或创建;

第二部分是应用数据对线性回归模型停止拟合;

第三部分是应用训练好的模型去预测恣意的体重并画出对恣意体重的预测值,

如今末尾上代码。
# 第一部分 加载库,导入数据
# 从sklearn库导入线性回归模块
from sklearn.linear_model import LinearRegression
# 创建数据集,把数据写入到numpy数组
import numpy as np # 导入numpy库,支持数组的迷信计算
import matplotlib.pyplot as plt # 导入matplotlib库,用来画图
data = np.array([[152,51],[156,53],[160,54],[164,55],
[168,57],[172,60],[176,62],[180,65],
[184,69],[188,72]])
# 打印出数组的外形大小
print(data.shape)
# (10, 2)

这部分代码完成了加载相关的库和数据集的构建。

第一句从sklearn库的linear_model模块中导入LinearRegression类。留意在python类的命名运用帕斯卡命名方式,即首字母大写。不是类,普通首字母不大写。numpy库是专门基于数值的迷信计算而开发的。是python能停止机器学习的核心库。没有它,python几乎无法高效地停止数值计算。Python本不是为数值计算而设计的。

第二句不只导入了numpy库,还给它一个简单的别名np,后面就可以用别名替代库的全称了。就好像给蔡徐坤起个别名“坤”,即亲切又省劲。

第三句导入matplotlib.pyplot并给它一个别名plt。这是python绘图必备函数。

第四句创建了一个二维的np数组,其中第一列是特征(身高),第二列是(体重)

第五句打印数组的外形。(10,2)中10代表的是数组的行数,2代表的是列数。
# 第二部分 探求性数据分析
# 从data中提取出身高和体重,分别存放在x, y变量中
x, y = data[:,0].reshape(-1,1), data[:,1]
# 画身高和体重的散点图
plt.scatter(x, y, color='black')
plt.xlabel('height (cm)')
plt.ylabel('weight (kg)')
plt.show()

该部分的第一句是将data数组中的第0列赋值给x;将第1列赋值给y。不熟习python的同窗能够对这种元组对应地位赋值的方式不顺应。逗号间隔的对象组成元组,可以没有括号。需求留意data[:,0]中添加了一个reshape的函数方法。它的作用是将之转换为之后fit函数要求的【矩阵的方式】。

对数据的相关性特征没有了解,就上线性回归模型,就是“耍流氓”。我们要看看能否两个变量之间的关系是近似线性的。第二句就是根据x和y画散点图,数据点的颜色设为黑色。第三、四句分别设置x轴和y轴的轴标签。最后一句,用来显示图形。

可以看到身高和体重的关系是可以看为近似线性的。接上去,就上线性回归模型了。

# 第三部分 模型拟合与预测
# 1. 实例化一个线性回归的模型
lm=LinearRegression(normalize=True)
# 2. 在x,y上训练一个线性回归模型。
lm.fit(x,y)
# 3. 画出身高与体重之间的关系
plt.scatter(x,y,color='black')
# 画拟合曲线
plt.plot(x, lm.predict(x), color='blue')
plt.xlabel('height (cm)')
plt.ylabel('weight (kg)')
plt.show()
# 4. 预测身高为163的人的体重
print ("Standard weight for person with 163 is %.2f"% lm.predict([[163]]))
# Standard weight for person with 163 is 55.77

本部分的第一句初始化一个类实例。第二句根据x和y训练一个线性回归模型。

第四句根据x和y的预测值(也称拟合值)绘制拟合直线。看看效果还不赖吧?第六句用模型预测身高1米63的体重为55.77kg。

好了我们的代码就演示到这里了。这段代码展现了python中机器学习建模工作流中的数据导入、数据的探求性分析和模型的拟合和预测这些环节。短少了数据预处理、特征工程、数据集的训练集和测试集的划分、模型的评价和验证。这些内容会在后续推文逐一展开。

那接上去,动手跑跑这段代码,和python机器学习say hello吧!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

大神点评3

很堕落 2019-10-13 22:31:25 来自手机 显示全部楼层
这帖子写的不错
回复

使用道具 举报

要抗争到底 2019-10-15 07:03:38 显示全部楼层
好棒的分享楼主多写点吧,写完记得通知我,哈哈
回复

使用道具 举报

shin5jj 2019-10-15 18:52:29 显示全部楼层
看起来好像不错的样子
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies