志在指尖
用双手敲打未来

学习python(python机器学习)

学习python

随着数据科学概念的遍及,Python这门并不算新的语言火得一塌糊涂。
由于写了几篇用Python做数据分析的文章,经常有读者和学生在留言区问我,想学习Python,该如何入手?
我经常需求依据他们的不同情况,提出对应的主张。这样针对性虽强,但功率不高。这个问题,我仍是写出来,让更多的人一起看到吧。
有几位出版社的修改,给我发私信,鼓舞我赶紧写一本Python教材出来。
我暂时还没有写Python根底教程的计划。由于在我看来,现有的学习资源现已足够好了。
有现成的资源和途径,为什么许多人依然在为学Python犯愁呢?
由于学习有个功率问题。
Python语法明晰明快,简单易学。这是Python如此遍及的重要原因。可是,挑选适宜的Python学习方法,需求跟你自身的特性相结合。
人群划分的规范是什么?不是你是否计算机相关专业,也不是你是否现已工作,而是一个重要的指标——你的自律才能。
你或许觉得我说的话没有信息含量。自律才能强,学得更好,地球人谁不知道?
可是,自律不行强的人,难道就注定什么也不能学了?学习python
当然不是。
每个人的性情都有不同的特点,没有绝对的高下之分。不信你听听刘宝瑞先生的相声《日遭三险》,就明白了。
自律才能也是这样。只需你能清楚认识自己,就能以更高效的方法来学习新知识和技能。
下面我们分类讨论一下,不同自律才能的人,该如何学Python,才能更高效。
途径I
我们先从自律才能最差的人说起。
这样的同学,往往是三分钟热度。偶尔受到了刺激,发奋要学习Python,以便投入数据科学的工作中。
他会当即跑到图书馆或许书店抱回来一本《X天从入门到精通Python》的书开始啃。成果X天还没到,就顺畅跑完了从入门到放弃的全过程。
你没能坚持下来,自己肯定是有责任的。可是最大的问题,在于过度高估自己的自律才能。
这样的同学,我引荐你到Coursera平台上,墨守成规学习一门非常好的MOOC——“ProgrammingforEverybody”。
引荐这门课,是由于课程质量真是太好了。
首先是教材好。这本教材的来历是有故事的。
先是AllenB.Downey写了一本开放书本“ThinkPython:HowtoThinklikeaComputerScientist”。
这本书在Amazon上的点评是这样的:
CharlesSeverance觉得这本书写得太好了,想把它作为教材。于是征得作者赞同,大篇幅学习了这本书的内容架构,编写了一本“PythonforInformatics”。
Charles写作这本书的时分,同时开放推出了iBook格式。里面就包含了自己的授课视频,供学生直接观看学习。
后来,Charles用这本书扩展,做成了一门MOOC。2015年上线不久,硅谷资深工程师就都争相学习。
Charles深谙课程迭代的技艺。他不断添加内容,完善课程体系,将一门课开展成一个专项课程(SignatureTrack),而且将教材升级为“PythonforEverybody:ExploringDataInPython3”
在现在全球MOOC口碑榜上,Charles的这门课一直独占鳌头。
这个专项课程浅显易懂解说Python原本就很简单的语法,而且还用数据科学的一些根底工作任务,带动你去使用Python语言写简单项目。这种扎实的操练过程可以增强你的决心,激起爱好。
关于自律程度低的同学来说,下面这个特性更重要——一切工作都有时限。
Coursera上的课程,每周的任务很清晰。操练题正确率如果不能到达80%,就不能过关。到了截止日期,如果你不能完结全部操练和课程项目,就拿不到证书。
老师在前面引领你,助教在旁边督促你,平台用时间表提醒你,论坛上的同学们在用同侪压力推挤你……
想偷闲?想三天打鱼两天晒网?很难。

python机器学习

运用Python库、流水线功用以及正则化办法对非线性数据进行建模。
在数据科学和分析领域中,对非线性数据进行建模是一项惯例使命。但找到一个成果随自变量线性变化的天然进程很不简单。因此,需求有一种简便而且稳健的办法来快速将测量数据集与一组变量进行拟合。咱们假定测量数据可能包含了一种杂乱的非线性函数联系。这应该是数据科学家或机器学习工程师常用的东西。
咱们要考虑以下几个相关的问题:
怎么确认拟合多项式的顺序?是否需求为多变量回归加上穿插耦合项?有没有简单的办法将这一进程自动化?
怎样判别模型是否过拟合?
怎么得知模型在面临噪声时够不够稳健?
模型能不能轻松拓宽到更高维度或更大的数据集上?
怎么确认拟合多项式的顺序?
“咱们能不能画出数据图形直接得到定论?”python
数据假如能清楚的可视化表明(即特征维度为1或2)时,办法可行。一旦数据的特征维度等于3或者更多,这事儿就麻烦了。而且假如对成果产生影响的特征存在穿插耦合,这么做就完全是在浪费时间。下面咱们画个图来感受一下:
很明显,直接画图的办法最多也只能做到上面这种程度。对那些更高维度而且变量相互作用的数据集,假如你企图每次只查看单个输入变量和输出之间的联系,会得出完全过错的定论。而且目前没有什么好办法一起显现两个以上的变量。所以,咱们有必要选用某种机器学习的技能来拟合多维数据集。
实际上,现已有了不少好的解决方案。
在你看到“…但这些是高维非线性数据集…”这句话宣布尖叫之前,线性回归应该是头一个能找到的东西。注意一点:线性回归模型中的“线性”二字指的是系数,而不是特征。特征(即自变量)可所以任意多维度的,甚至可所以指数、对数、正弦这些函数。更凶猛的是,可以运用这些改换和线性模型(近似)对令人惊讶的许多天然现象进行建模。
来看看下边这个有三个特征、单输出的数据集。咱们再一次运用了前边说到的画图办法,很明显它表现的差强人意。
因此,咱们决议学习一个具有高阶多项式项线性模型来拟合数据集。那么问题来了:
怎样确认什么多项式是有用的?
假如咱们开端将一次项、二次项、三次项…逐个进行组合,什么时候停止比较合适呢?
咱们怎么断定哪些穿插耦合的项是重要的?比方:是只需求_X_12、_X_23仍是需求有_X_1._X_2以及_X_12.X3这种项?
最后,咱们是不是有必要手动将这些多项式转化的方程/函数式写出来而且应用到数据集上?
强大的Python机器学习库来帮助
走运的是,有一个很凶猛的机器学习库–scikit-learn供给了许多老练的类/目标来解决上边说的这些问题。
这儿有一个对运用scikit-learn进行线性回归进行概述的材料(原文中说是视频,但打开链接看了一下是这个库的运用文档,故直接翻译为了材料)
http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html#sklearn.linear_model.LinearRegression
还有一篇很好的文章供咱们查看。
https://towardsdatascience.com/simple-and-multiple-linear-regression-in-python-c928425168f9?gi=69160943145f
但本文要介绍的不仅仅是一个简单的线性拟合,请咱们接着往下看。(原文有一句说到代码在作者的GitHub,但是发现链接现已404,所以没加)
咱们从引进scikit-learn中相关的包开端:
fromsklearn.cross_validation#引进函数进行练习集和测验集的区分
importtrain_test_split
#引进函数自动生成多项式特征
fromsklearn.preprocessingimportPolynomialFeatures
#引进线性回归和一个正则化的回归函数
fromsklearn.linear_modelimportLinearRegression
fromsklearn.linear_modelimportLassoCV
fromsklearn.pipelineimportmake_pipeline
下面快速阐明一下咱们等会儿要用到的一些概念。
练习/测验集区分:表明将已有的单独数据集区分为两个子集。其中一个(练习集)用来树立模型,别的一个(测验集)用来评价模型的准确性和稳定性。这个过程对任何一个机器学习使命来说都是必不可少的。通过处理,咱们没有用一切的数据树立出一个看似反常准确的模型。(因为模型接触到一切的数据,当然会拟合的很好)这个模型通常在新数据(不知道)数据上表现很差。
模型在测验集上的准确性比其在练习集上的准确性更有说服力。这儿有一篇关于这个话题延伸的文章,有兴趣的读者可以看看。
https://towardsdatascience.com/train-test-split-and-cross-validation-in-python-80b61beca4b6
下面你会看到Googlecar的前驱SebastionThrun对这个概念的说法。
多项式特征自动生成
Scikit-learn供给了一个从一组线性特征中生成多项式特征的办法。你需求做的便是传入线性特征列表,并指定期望生成的多项式项的最大阶数。它还可以让你挑选是生成一切穿插耦合项仍是只生成主要特征的阶数。这里有一个Python代码进行演示。
http://scikit-learn.org/stable/auto_examples/linear_model/plot_polynomial_interpolation.html#sphx-glr-auto-examples-linear-model-plot-polynomial-interpolation-py
正则化回归
正则化的重要性显而易见,它是机器学习的一个中心概念。在树立线性模型时,最基本的主意是对模型的系数进行“赏罚”,使它们不会变得太大而过拟合数据(对噪声数据过于敏感)。有两个广泛运用的正则化办法,其中咱们要用的被称为LASSO。下边这篇文章对两种正则化办法做了很好的概述。
https://www.analyticsvidhya.com/blog/2016/01/complete-tutorial-ridge-lasso-regression-python/
机器学习流水线
一个机器学习项目几乎不会是单一的建模使命。它最常见的方式包含数据生成、数据清洗、数据转化、模型拟合、穿插验证、模型准确性评价和最终的布置。
罗列一些相关的学习材料如下:
对上述概念总结的一个Quora答复:
https://www.quora.com/What-is-a-pipeline-and-baseline-in-machine-learning-algorithms
别的一篇关于机器学习流水线的总结:
https://medium.com/@yanhann10/a-brief-view-of-machine-learning-pipeline-in-python-5f50b941fca8
对piplines在实践中重要性作出阐述:
https://www.oreilly.com/ideas/building-and-deploying-large-scale-machine-learning-pipelines
Scikit-learn供给了一个流水线功用,可以将多个模型和数据预处理类组合在一起,把原始数据转化为可用模型。
http://scikit-learn.org/stable/tutorial
/statistical_inference/putting_together.html

未经允许不得转载:IT技术网站 » 学习python(python机器学习)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载