很多人问过我:“你一个文科生,究竟是怎么自学入门‘机器学习、深度学习’这种高深莫测的东西的?并且拿到2次全国数据分析大赛亚军的?”
其实,我并没有什么特别的天分,只是正好站在了“巨人的肩膀”上罢了。
为什么这么说呢?因为在机器学习领域,已经有很多技术大佬编写好了傻瓜式的工具库(相比我们自己从0开始编写算傻瓜式了),比如Sklearn、Tensorflow等,使用这些库并不需要掌握太复杂高深的理论(当然如果大家想要靠机器学习吃饭,不可能不掌握原理),我们只要学会“导入”和模型训练与预测这两步基本操作就能够编写一个属于自己的机器学习模型。
这并不是什么夸张,接下来,我将带你实际操作一个12行的线性回归机器学习模板,在这个模板上稍作修改,你也能够有一个完全属于自己的机器学习模型。
希望这个12行代码的模型能够破除大家对机器学习、人工智能这类前沿科技的狂热和迷信。
我已将该模型发布为Cloud Studio模板,大家点击这个链接就能够看到了:https://cloudstudio.net/templates/hTyvYTuugGx
我们的前期准备就只要准备一个好的【开发环境】就行了,所谓【开发环境】就是咱们写代码和运动代码的地方。
推荐使用线上开发环境,为什么?因为新手学习代码90%都是被【环境配置】吓到打退堂鼓的,还有10%是因为自身电脑的配置不行。
具体的线上开发环境,我这里推荐大家使用腾讯的Cloud Studio,理由很简单,因为线上开发环境在UI和性能上大同小异,我个人会比较在意性价比,Cloud Studio给我的第一感觉就是【性价比很高】,每个月都有免费1000分钟的名额,只要有微信就能够登录,1秒注册,并且基础机型(2核4GB)性能就已经能够满足我们的基础学习需求了,想要使用Cloud Studio点击这个链接就可以了:https://cloudstudio.net/。
接下来就以Cloud Studio为运行环境为大家讲解。
登录Cloud Studio之后,点击Python来创建一个Python环境,第一次创建可能需要等一会儿(1分钟左右),先不用着急。
创建好之后点击【新建文件】,选择Jupyter Notebook。
然后在【终端】输入以下代码(输完每一行按一下Enter等它下载完再进行后面的操作)
pip install sklearn
在第一个格子里面输入以下代码,然后点击左边的【三角形运行图标】,等待工作台将我们要用到的工具包全部导入。
# 这个模板是线性回归的
from sklearn.linear_model import LinearRegression #线性回归工具包
from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score #这是用来检验线性模型的工具包
from sklearn.datasets import load_iris #sklearn内置的一个鸢尾花数据集
from sklearn.model_selection import train_test_split #拆分训练集和测试集
这里代码中的sklearn就是我刚才说的“巨人的肩膀”,大部分机器学习都离不开它,我入门机器学习也是靠看它的官方文档(有中文翻译版:https://www.scikitlearn.com.cn/,但我更推荐英文原版:https://scikit-learn.org/stable/)才得以摆脱对周志华老师《机器学习》西瓜书的恐惧,因为《机器学习》西瓜书里面的数学原理太多了。
这里就不借着细讲sklearn这个库了,大家可以通过看代码#后面的注释来了解每行代码的作用与含义,有不明白的可以自行百度。
一行代码搞定,将数据拆分为训练集X和测试集Y,因为不拆分就是一整块的数据,我们需要用一部分数据来训练我们的模型(训练集),一部分数据来检验我们的模型是否有效(测试集),最后将他们各自拆分为自变量x和因变量y。
# 模拟数据,这里用了scikit-learn的内置鸢尾花长度-宽度数据集
X_train,Y_train = load_iris().data[:,2].reshape(-1,1),load_iris().data[:,3]
# 分割将测试集和训练集分别拆分出因变量和自变量来
train_x, test_x, train_y, test_y = train_test_split(X_train,Y_train, test_size=0.2,random_state=0)
重头戏来了,整个模型的训练和预测其实就只有3行代码,首先是选择模型,这里选择的是【线性回归:LinearRegression
】,然后让模型在训练集上做训练,最后再用测试集的x产生模型对测试集的预测结果。
#模型训练与预测
lr = LinearRegression() # 这里把模型改成LogisticRegression就是逻辑回归
lr.fit(train_x, train_y) # 让模型在训练集上做训练
predict_y = lr.predict(test_x) # 用测试集的x产生模型对测试集的预测结果
一个模型好不好,得通过模型检验才知道,这里我们用到了线性回归的3个常用检验参数:MSE、MAE和R方,具体含义我就不解释了,这里可以简单跟大家讲一下R方,R方介于0-1之间,越接近1代表模型效果越好。
# 线性回归模型验证
print('MSE:',mean_squared_error(predict_y,test_y))
print('MAE:',mean_absolute_error(predict_y,test_y))
print('R方:',r2_score(predict_y,test_y))
我们整个模型的R方是0.874,说明还是拟合效果非常好的。
整个模型其实大家只需要改一下【数据导入的代码】并且添加【结果导出的代码】,就可以拿到自己的实际生活中去运用了,但我相信大家也发现了,模型是很简单的,结果也是很容易得到的,其实这就跟SPSS一样,SPSS也能够通过不超过5步的点击得到一个线性回归模型(如下图所示),但是,它的结果如果没有系统学习,相信没有人能够理解。
所以说,我觉得在机器学习领域,真正重要的永远不是结果,而是如何去理解这个模型本身。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。