引言 几年后发生了。在使用SAS工作超过5年后,我决定走出自己的舒适区。作为一个数据科学家,我寻找其他有用的工具的旅程开始了!幸运的是,没过多久我就决定,Python作为我的开胃菜。 我总是有一个编写代码的倾向。这次我做的是我真正喜欢的。代码。原来,写代码是如此容易! 我一周内学会了Python基础。并且,从那时起,我不仅深度探索了这门语言,而且也帮助了许多人学习这门语言。Python是一种通用语言。但是,多年来,具有强大的社区支持,这一语言已经有了专门的数据分析和预测模型库。 由于Python缺乏数据科学的资源,我决定写这篇教程来帮助别人更快地学习Python。在本教程中,我们将讲授一点关于如何使用Python进行数据分析的信息,咀嚼它,直到我们觉得舒适并可以自己去实践。
1. 数据分析的Python基础
2. Python的库和数据结构
3. 在Python中使用Pandas进行探索性分析
4. 在Python中使用Pandas进行数据再加工 5. 使用Python中建立预测模型
让我们开始吧 1.数据分析的Python基础 为什么学Python用来数据分析 很多人都有兴趣选择Python作为数据分析语言。这一段时间以来,我有比较过SAS和R。这里有一些原因来支持学习Python:
不用说,它仍然有几个缺点:
Python 2.7 v/s 3.4 这是关于Python的一个最具争议的话题。你可能总是不能避免遇到,尤其是如果你是一个初学者。这里没有正确/错误的选择。它完全取决于具体情况和你的需要。我会尝试给你一些建议,以帮助你做出明智的选择。 为什么选择Python 2.7
为什么选择Python 3.4
没有明确的赢家,但我想,底线是,你应该专注于学习Python语言。版本之间的转换应该只是一个时间问题。敬请期待,不久的将来一个专门对比Python 2.X和3 X的文章! 怎样安装Python 有两种方法安装Python
第二种方法提供了一个避免麻烦的安装,因此我会推荐给初学者。这种方法是你必须等待整个包进行升级, 即使你只是对一个单一的库的最新版本感兴趣。它应该不重要,直到和除非,直到和除非,你正在做的尖端统计研究。 选择开发环境 一旦你已经安装了Python,选择环境可以有很多种选择。这里是3个最常见的选择:
我们在整个教程中将使用Ipython 环境 热身:跑第一个Python程序 你可以使用Python作为一个简单的计算器来开始:
在我们深入挖掘如何解决问题之前,让我们退后一步,了解Python的基本知识。当我们知道数据结构和迭代和条件结构是形成任何语言的关键。在Python中,这些包括列表、字符串、元组、字典、for循环,while循环,if-else等等,让我们来看看下面的因素。 2 .在Python上运行一些简单程序 Python的数据结构 以下是Python中使用的一些数据结构。你应该熟悉他们,以便恰当的使用它们。
这里是一个快速的例子,定义了一个列表,然后访问它:
因为元组是不可变的,不可改变的,他们相对列表来说可以处理的更快。因此,如果你的清单是不可能改变的,你应该使用元组,而不是列表。
和大多数语言一样,Python也有一个FOR循环,这是最广泛使用的迭代方法。它有一个简单的语法:
如果你想从零开始写代码,它将是一场噩梦,你使用Python不会超过2天!但不要担心这些。值得庆幸的是,有许多预定义的库,我们可以直接导入到我们的代码,使我们的生活很容易。 例如,考虑我们刚才看到的因子的例子。我们可以一步就完成:
Python库 在开始我们的学习Python之旅之前,让我们先一步,了解一些有用的python库。第一步显然是要学会将它们导入到我们的环境中。在Python中有以下几种方法:
第二方式,你需要导入math的整个命名空间,你可以直接使用factorial(),而不用提到math。 提示:谷歌推荐您使用第一种方式导入库,因为您将知道函数来自何处。 下面是一个库列表,你将在任何科学计算和数据分析中用到:
其它的库,你可能需要:
现在我们已经熟悉Python的基础和更多的库,让我们深入到通过Python解决问题。是的,我的意思是做一个预测模型!在这个过程中,我们使用了一些强大的库,也遇到了下一级的数据结构。我们将带你通过这3个关键阶段:
3.在Python中使用Pandas进行探索性分析 为了进一步探索我们的数据,让我把你介绍给另一种动物(好像Python是不够的!)–– Pandas
在加载数据之前,让我们了解Pandas 中的2个关键的数据结构——序列和数据框 序列和数据框的简介 序列可以被理解为一个1维标记/索引数组。你可以通过这些标签访问这个序列的各个元素。 一个数据框类似于Excel工作簿–你可以使用列名来引用列,可以通过行号来访问行数据,本质的区别是,在数据帧中,列名和行号是列和行的索引。 More: 10 Minutes to Pandas 实践数据集——贷款预测问题 您可以从这里下载数据集。这里是变量的描述:
开始,通过在你的你的终端/ Windows命令提示符键入下面的代码,来以Inline Pylab模式启动IPython界面:
/home/kunal/Downloads/Loan_Prediction/train.csv 导入库和数据集: 下面是我们将在本教程中使用的库:
请注意,你不需要导入matplotlib和NumPy,因为是在PyLab环境下。但我仍然在代码中保留了它们,以防你在不同的环境中使用代码。 导入库以后,你可以使用read_csv()函数读数据集。这是直到这个阶段的代码: 快速数据探索 一旦你读取了数据,可以通过使用head()函数查看一下前几行的数据:
接下来,你可以使用describe()函数来查看数值字段的概要: describe()功能将提供计数、平均、标准差(STD),最小值,分位数值和最大值(读这篇文章来更新基本统计数据了解人口分布) 这里有几个结论,你可以通过查看describe()函数的输出得出:
请注意,我们通过比较的平均值和中位数,即50%位数,来得到偏差的概念。 对于非数值(例如property_area,credit_history等),我们可以看看频率分布,了解他们是否有意义。频率表可以通过以下命令打印:
分布分析 现在我们熟悉了基本的数据特征,让我们研究不同变量的分布情况。让我们从数字变量开始–即applicantincome和LoanAmount 我们通过绘制applicantincome的直方图开始,使用下面的命令: 在这里,我们观察到,有几个极端值。这也是分箱值为50的原因,就是为了清楚地描述它的分布。 下一步,我们看箱线图,了解分布。fare 的箱图可以使用下面代码绘制: 这证实了大量的离群值/极值的存在。这可以归因于社会上的收入差距。部分原因源于这样一个事实:我们正在查看不同的教育水平的人。让我们根据他们所受的教育进行分组:
现在,让我们使用下面的命令看看LoanAmount的直方图和箱线图: 再次,有一些异常的值。显然,applicantincome和LoanAmount都需要进行一定的数据处理。 LoanAmount有一些缺失值以及一些异常的值,而applicantincome有一些异常值,需要更深入的了解。我们将在即将到来的部分完成这些。 分类变量的分析 现在我们了解了applicantincome和loanincome的分布,让我们了解更多关于分类变量的细节。我们将使用Excel数据透视表和交叉制表的风格。例如,让我们看看基于信用记录,可以获得贷款的可能性。这可以在微软的Excel上使用一个透视表实现:
现在我们将看看使用Python产生类似的效果所需要的步骤。请参考这篇文章,以使用Pandas获得不同的数据操纵技术。
现在我们可以观察到,我们得到一个像微软的 Excel的pivot_table。这可以使用matplotlib库绘制成条形图,使用下面的代码: 这表明,如果申请人有一个有效的信用记录,获得贷款的机会是没有信用记录的人的八倍。你可以根据Married, Self-Employed, Property_Area等绘制类似的图。 或着,这两个图可以进行组合以后的可视化,使用堆叠图表示: 你还可以再上图中加入性别变量(类似于Excel中的数据透视表)
我们只看到我们如何使用Python中的Pandas做探索性分析。我希望你对大熊猫(动物)的爱现在增加了——给予一些帮助,这个库可以为你提供分析数据集。 接下来让我们进一步探讨applicantincome和loanstatus变量,进行数据修改和创建一个数据集并应用各种建模技术。我强烈要求你采用另一个数据集和习题,并在进一步阅读之前完成一个独立的例子。 在Python中使用Pandas进行数据再加工 4.数据修改–翻新的需要 对于那些一直跟下来的人来说,这时你必须穿上鞋才能开始跑。 在我们的探索数据期间,我们发现了数据集的一些问题,在数据准备好建立一个好的模型之前需要解决。这个练习通常被称为“数据修改”。这里是问题,我们已经意识到的:
除了数值领域的这些问题,我们也应该看看非数值领域Gender, Property_Area, Married,Education 和 Dependents这些变量,看看它们是否包含任何有用的信息。 如果你是Pandas的新手,我建议在继续前进之前阅读这篇文章。它详细介绍了一些有用的数据处理技术。 检查数据集中的缺失值 让我们看看所有的变量中的缺失值,因为大多数模型不能处理有缺失值的数据,即使他们可以,输入它们往往不能帮助更多。所以,让我们看看数据集中空值/NAN值的数量:
注:记住,缺失值可能并不总是NaN。例如,如果loan_amount_term是0,它是有意义的或者你认为是缺失的?我想你的答案是缺失的,你是对的。所以我们应该检查那些不切实际的值。 如何填补LoanAmount的缺失值? 有许多方法来填补价值贷款金额的缺失值,最简单的就是使用均值来替换,可以通过以下代码实现: 另一个极端是可以建立一个监督学习模型来基于其他变量预测贷款金额,然后使用年龄以及其他变量来预测。 既然,现在的目标是讲述数据修改的步骤,我宁愿采取一种方法,它介于这2个极端方法之间。一个关键的假设是,一个人是否受教育的或是否自雇人士可以结合起来,提供一个很好的贷款金额的估计。 首先,让我们看看箱线图看是否有某种趋势存在:
如我们先前所说,self_employed有缺失值。让我们看看频率表:
如何处理在LoanAmount和applicantincome分布中的极值? 让我们先分析LoanAmount。由于极端值可能是现实的的,即一些人可能会由于特定的需求,申请高额的贷款,。所以,不把它们当做离群点对待,让我们尝试对数据转换从而发挥它们的作用: 再看直方图:
来看看applicantincome。一种直觉可以是一些申请人有较低的收入,但有一个有力的支持,共同申请者。所以将两者的收入结合起来作为总收入可能是一个好主意,并采取相同的对数变换。 现在我们看到,分布比以前好多了。我会把Gender, Married, Dependents, Loan_Amount_Term, Credit_History等缺失值的估计留给你。此外,我鼓励你考虑可能的额外的信息,可以来自数据。例如,创建一个LoanAmount/TotalIncome列可能会有意义,因为它能给你一个关于申请人如何偿还他的贷款的好想法。 下一步,我们将研究预测模型。 5. 使用Python中建立预测模型 之后,我们已经使数据可以用于建模,现在让我们来看看Python代码,来在我们的数据集上创建一个预测模型。Skicit-kearn(sklearn)是Python中最常用于此目的的库,我们将跟随这条小径。我建议你通过这篇文章来复习进修sklearn。 因为,sklearn要求所有输入都是数字,我们应该通过编码类别将我们所有的分类变量转换为数值型。这可以用下面的代码来完成:
逻辑回归 让我们做我们的第一个逻辑回归模型。一个方法就是把所有的变量都加入模型,这可能会导致过度拟合(如果你还不知道这个术语,不要担心)。简单的说,考虑所有的变量可能会导致模型的理解出比较复杂的关系,对于具体的数据,不能很好的概括。阅读更多关于逻辑回归。 我们可以很容易地作出一些直观的假设来设定启动资金。获得贷款的机会将更高:
让我们使用credit_history建立我们的第一个模型。
一般来说,我们期望通过增加变量来提高准确度。但这是一个更具挑战性的案例。准确度和交叉验证得分不受哪些影响较小变量的影响。credit_history主导模式。我们现在有两个选择:
决策树 决策树是建立预测模型的另一种方法。它能比逻辑回归模型提供更高的准确度。阅读更多关于决策树。
在这里,基于分类变量的模型是不能产生影响的,因为相比它们信用历史是占主导地位的。让我们尝试一些数值变量:
在这里,我们观察到,虽然增加变量时提高了准确度,交叉验证错误下降。但这是模型对数据过拟合的结果。让我们尝试一个更复杂的算法,看看它是否有帮助: 随机森林 随机森林是解决分类问题的另一种算法。阅读更多关于随机森林。 随机森林的一个优点是,我们可以使它与所有的功能,它返回一个功能的重要性矩阵,它可以用来选择功能。
在这里,我们看到的准确性是100%的训练集。这是过度拟合的最终情况,可以以两种方式解决:
让我们尝试这两个。首先,我们看到的特征重要度矩阵,从中我们将采取最重要的特点。 让我们使用前5个变量来创建一个模型。此外,我们将修改随机森林模型的参数有一点: 让我们使用前5个变量来创建一个模型。此外,我们将修改一点点随机森林模型的参数:
注意,虽然准确度降低,但交叉验证得分提高表明该模型推广良好。请记住,随机森林模型是不完全可重复的。不同的运行会导致轻微的变化,因为随机。但输出应该呆在球场。 你会注意到,即使在随机森林的一些基本参数调整后,我们已经达到了一个交叉验证的准确性只有略优于原来的逻辑回归模型。这个练习给我们提供了一些非常有趣和独特的学习:
所以你准备好接受挑战了吗?用贷款预测问题开始你的数据科学之旅。 结尾 当你开始将Python用于数据科学时,我希望本教程可以帮助你最大限度地提高你的效率。我相信这不仅给你一个基本的数据分析方法的想法,它也展示了你如何实现一些当下存在的更复杂的技术。 Python确实是一个伟大的工具,并正在成为数据科学家之间一个越来越流行的语言。原因是,它很容易学习,可以很好地集成其他数据库和工具如:Spark和Hadoop。主要的,它有很大的计算强度,并且具有强大的数据分析库。 所以,学习Python执行任何全生命周期的数据科学项目。它包括阅读,分析,可视化和最后的预测。 如果在实践Python的时候,你遇到任何困难,或者你有什么想法/建议/反馈,请通过下面的评论请我提出。 英文原文:https://www./blog/2016/01/complete-tutorial-learn-data-science-python-scratch-2/
|
|