text.html 25.1 KB
Newer Older
ToTensor's avatar
ToTensor 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
 
<p class="content_105">大家听了咖哥这一番剖析,感觉概念上清晰多了,也受到了很大的鼓舞,决心“面对”而不是“逃避”老板“丢过来”的挑战。现在,小冰甚至觉得有点小兴奋:攻克一个与未来息息相关的技术是多么有趣的事情。</p> 
<p class="content_105">咖哥接着说:“说了半天各种‘学习’的类型和特点,那些也只是概念和理论。现在,咱们亲自运行一个机器学习实例,看一看机器学习的项目实战是什么模样,到底能解决什么具体问题。”</p> 
<p class="content_105">“不过,我听说机器学习对硬件要求挺高的,好像需要配置很贵的GPU?”小冰问。</p> 
<p class="content_105">“也不一定!”咖哥说。</p> 
<p class="content_105">咖哥对这个时代的学习方式有他的看法:他觉得,需要去培训中心进修,或者要先安装一大堆东西才能开始上手一项新技术的日子已经一去不复返了。</p> 
<p class="content_105">“学习新技能的门槛比以前低太多了。因为在线学习这么发达,最新的知识、技术甚至论文每时每刻都会直接被推送至世界的每一个角落,所以相对贫穷的地方也涌现出了一大堆高科技人才。<span class="bold">在线学习</span>,这是低成本自我提升的最好方法。”咖哥说,“不管是在通州、德州,还是在徐州、广州,你们完全可以和斯坦福大学的学生学习相同的AI课程。”</p> 
<div class="pic"> 
 <img src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0033-0024.jpg"> 
 <p class="imgtitle">咖哥告诉小冰,在线学习非常方便</p> 
</div> 
<h3 class="thirdTitle" id="bw10"><a >1.2.1 在线学习平台上的机器学习课程</a></h3> 
<p class="content">想学机器学习的人,不大可能没有听说过吴恩达。他开设的机器学习课程已经造就了数以万计的机器学习人才,如果英文好,你们可以去他的Coursera网站看看。那是众多的大规模开放在线课程(Massive Open Online Course,MOOC)平台之一,里面还有一些免费课程。</p> 
<p class="content">吴恩达老师采用Octave和MATLAB作为他的机器学习教学环境。我当年学他的课程时,就惊讶于MATLAB Online的强大,什么都不用安装,就可以直接上网实战,如下图所示。</p> 
<div class="pic"> 
 <img src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0034-0025.jpg"> 
 <p class="imgtitle">直接上网使用MATLAB Online进行机器学习项目实战</p> 
</div> 
<p class="content_105">小冰插嘴问道:“既然吴老师的机器学习课程这么好,又是免费的,我直接和他学不就好了?”咖哥笑答:“也可以啊,但还是大有不同。吴老师的课程虽然深入浅出,不过仍有门槛,他已经尽量压缩了数学内容,可公式的推导细节还是不少啊!”咖哥喝了一口咖啡,很自信地说:“我会把机器学习的门槛进一步降低,还会着重介绍深度学习的内容。<span class="bold">我保证,能让你们更轻松地听懂我设计的全部内容</span>。”</p> 
<h3 class="thirdTitle" id="bw11"><a >1.2.2 用Jupyter Notebook直接实战</a></h3> 
<p class="content">注意,吴老师课程中的MATLAB环境虽然是机器学习的好工具,但它可不是开源软件,长期使用它需要购买版权。那么,有没有基于Python的免费平台,直接在线进行机器学习的实战?—有,而且还不止一个!</p> 
<p class="content">答案就是使用在线的<span class="bold">Jupyter Notebook</span>。你们可以把Jupyter Notebook想象成一个类似于网页的多媒体文档,里面有字、有图、能放公式、有说明。但是,比普通网页更高一筹的是,它还能运行Python代码(如下图所示)。</p> 
<div class="pic"> 
 <img src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0034-0026.jpg"> 
 <p class="imgtitle">一个在线的Jupyter Notebook</p> 
</div> 
<p class="content">有了在线的Jupyter Notebook,根本不需要在本机安装Python运行环境就可以“玩”机器学习。而且大多的Python库、机器学习库和深度学习库,在线的Jupyter Notebook都支持。</p> 
<p class="content">免费提供在线的Jupyter Notebook的网站有很多,比如Binder、Kaggle Notebooks、Google Colaboratory、Microsoft Azure Notebooks、Co Calc和Datalore等,都挺不错的,但是全部都介绍的话内容太多了。挑两个比较常用的说一说,让大家见识一下上手机器学习实战的速度。</p> 
<h3 class="thirdTitle" id="bw12"><a >1.2.3 用Google Colab开发第一个机器学习程序</a></h3> 
<p class="content">Google Colaboratory(简称Colab),是Google提供的一个AI研究与开发平台。Colab给广大的AI开发者提供了GPU,型号为Tesla K80。在Colab中可以轻松地运行Keras、Tensor Flow、Py Torch等框架。下面的图中,我随便写了一个“Hello World!!”程序。</p> 
<div class="pic"> 
 <img src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0035-0027.jpg"> 
 <p class="imgtitle">在Colab中写一个Hello World程序</p> 
</div> 
<p class="content">在Colab中,也自带了很多非常优秀的机器学习入门教程以及示例代码,你们如果有兴趣,也可以去看一看,练习一下那些示例。话不多说,我们现在从头到尾写一个属于自己的机器学习程序。</p> 
<p class="content">本课程有配套的代码包和数据集,第一个程序的文件保存在“X:源码包\第1课 机器学习实战\教学用例1 加州房价预测”中,大家可以自行取用。</p> 
<p class="content">在搜索引擎中搜一下Colab,通过链接直接进入其环境,选择“文件”→“新建Python 3记事本”,如下图所示。</p> 
<div class="pic"> 
 <img src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0035-0028.jpg"> 
 <p class="imgtitle">在Colab中新建Python 3记事本</p> 
</div> 
<p class="content_101"><img alt="" class="h-pic" src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0036-0029.jpg">咖哥发言</p> 
<p class="content">如果访问Colab有困难,可以试试其他Jupyter Notebook网站,如Kaggle、Binder、Datalore等。代码是通用的,但是要注意各个平台的不同设定选项。比如,在Kaggle中,要访问Internet上的文件和数据集,需打开屏幕右侧Setting中的Internet选项。</p> 
<p class="content">首先,请大家注意这个运行环境里面的代码段和文字信息段都是一块一块的。所以不需要把整个程序都编译完成后才进行调试。写一段,就运行一段。这样很容易及早发现问题。等到程序完成后,也可以通过整体运行功能从头到尾执行全部代码。</p> 
<p class="content">在新创建的Python 3记事本中输入下面几行代码:</p> 
<div class="content_106"> 
 <p class="content_105">import pandas as pd #导入Pandas, 用于数据读取和处理</p> 
 <p class="content_105"># 读入房价数据,示例代码中的文件地址为internet链接,读者也可以下载该文件到本机进行读取</p> 
 <p class="content_105"># 如,当数据集和代码文件位于相同本地目录,路径名应为"./house.csv",或直接为"house.csv"亦可</p> 
 <p class="content_105">df_housing = pd.read_csv("https://raw.githubusercontent.com/huangjia2019/house/</p> 
 <p class="content_105">master/house.csv")</p> 
 <p class="content_105">df_housing.head #显示加州房价数据</p> 
</div> 
<p class="content">上面的代码解释如下。</p> 
<p class="content">■先导入了Pandas,这是一个常见的Python数据处理函数库。</p> 
<p class="content">■用Pandas的read_csv函数把一个网上的共享数据集(csv文件)读入DataFrame数据结构<span class="italic">df_housing</span>。这个文件是美国加利福尼亚州(后文简称加州)某个时期的房价数据集,我已经提前把它保存在GitHub中了。</p> 
<p class="content">■用Data Frame数据结构的head方法显示数据集中的部分信息。</p> 
<p class="content">单击代码左侧<img alt="" class="h-pic" src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0036-0030.jpg">箭头就可以运行代码,读取并显示出加州房价数据集中的信息,结果如下:</p> 
<div class="content_112"> 
 <p class="content_109"><    longitude latitude ... median_income median_house_value</p> 
 <p class="content_109">0    -114.31   34.19 ...     1.4936       66900.0</p> 
 <p class="content_109">1    -114.47   34.40 ...     1.8200       80100.0</p> 
 <p class="content_109">2    -114.56   33.69 ...     1.6509       85700.0</p> 
 <p class="content_110">..</p> 
 <p class="content_109">16997  -124.30   41.84 ...     3.0313       103600.0</p> 
 <p class="content_109">16998  -124.30   41.80 ...     1.9797       85800.0</p> 
 <p class="content_109">16999  -124.35   40.54 ...     3.0147       94600.0</p> 
 <p class="content_109">[17000 rows x 9 columns]></p> 
</div> 
<p class="content">如果上面这个数据读入和显示的过程通过其他语言来实现,可要费不少力气了。但是Python的功能性在这儿就体现出来了—通过一个函数或一个方法,直接完成一件事儿,不拖泥带水。</p> 
<p class="content">说一下这个数据集。这是加州各地区房价的整体统计信息(不是一套套房子的价格信息),是1990年的人口普查结果之一,共包含17 000个样本。其中包含每一个具体地区的经度(longitude)、纬度(latitude)、房屋的平均年龄(housing_median_age)、房屋数量(total_rooms)、家庭收入中位数(median_income)等信息,这些信息都是加州地区房价的特征。数据集最后一列“房价中位数”(median_house_value)是标签。这个机器学习项目的目标,就是根据已有的数据样本,对其特征进行推理归纳,得到一个函数模型后,就可以用它推断加州其他地区的房价中位数。</p> 
<p class="content">然后构建特征数据集<span class="italic">X</span>和标签数据集<span class="italic">y</span>,如下段代码所示。注意,Python是大小写区分的,而且在机器学习领域,似乎有一种习惯是把特征集<span class="italic">X</span>大写,把标签集<span class="italic">y</span>小写。当然,也并不是所有人都会遵循这个习惯。</p> 
<div class="content_106"> 
 <p class="content_105">X = df_housing.drop("median_house_value", axis = 1) #构建特征集X</p> 
 <p class="content_105">y = df_housing.median_house_value #构建标签集y</p> 
</div> 
<p class="content">上面的代码使用drop方法,把最后一列median_house_value字段去掉,其他所有字段都保留下来作为特征集<span class="italic">X</span>,而这个median_house_value字段就单独赋给标签集<span class="italic">y</span></p> 
<p class="content">现在要把数据集一分为二,80%用于机器训练(训练数据集),剩下的留着做测试(测试数据集)如下段代码所示。这也就是告诉机器:你看,拥有这些特征的地方,房价是这样的,等一会儿你想个办法给我猜猜另外20%的地区的房价。</p> 
<div class="content_106"> 
 <p class="content_105">from sklearn.model_selection import train_test_split #导入sklearn工具库</p> 
 <p class="content_105">X_train, X_test, y_train, y_test = train_test_split(X, y,</p> 
 <p class="content_111">test_size=0.2, random_state=0) #以80%/20%的比例进行数据集的拆分</p> 
</div> 
<p class="content">其实,另外20%的地区的房价数据,本来就有了,但是我们假装不知道,故意让机器用自己学到的模型去预测。所以,之后通过比较预测值和真值,才知道机器“猜”得准不准,给模型打分。</p> 
<p class="content">下面这段代码就开始训练机器:首先选择LinearRegression(线性回归)作为这个机器学习的模型,<span class="bold">这是选定了模型的类型,也就是算法</span>;然后通过其中的fit方法来训练机器,进行函数的拟合。<span class="bold">拟合</span>意味着找到最优的函数去模拟训练集中的输入(特征)和目标(标签)的关系,<span class="bold">这是确定模型的参数</span></p> 
<div class="content_106"> 
 <p class="content_105">from sklearn.linear_model import Linear Regression #导入线性回归算法模型</p> 
 <p class="content_105">model = Linear Regression() #确定线性回归算法</p> 
 <p class="content_105">model.fit(X_train, y_train) #根据训练集数据, 训练机器, 拟合函数</p> 
</div> 
<p class="content">运行代码段后,Colab会输出Linear Regression模型中一些默认设定项的信息:</p> 
<p class="content_112">Linear Regression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)</p> 
<p class="content">好了,此时已经成功运行完fit方法,学习到的函数也已经存在机器中了,现在就可以用model(模型)的predict方法对测试集的房价进行预测,如下段代码所示。(当然,等会儿我们也可以偷偷瞅一瞅这个函数是什么样……)</p> 
<div class="content_106"> 
 <p class="content_105">y_pred = model.predict(X_test) #预测验证集的y值print ('房价的真值(测试集)', y_test)</p> 
 <p class="content_105">print ('预测的房价(测试集)', y_pred)</p> 
</div> 
<p class="content">预测好了!来看看预测值和真值之间的差异有多大:</p> 
<div class="content_113"> 
 <p class="content_109">房价的真值(测试集)[171400.189600.500001....142900.128300.84700.]</p> 
 <p class="content_109">预测的房价(测试集)[211157.218581.465317....201751.160873.138847.]</p> 
</div> 
<p class="content">虽然不是特别准确,但基本上预测值还是随着真值波动,没有特别离谱。那么显示一下这个预测能得多少分:</p> 
<p class="content_114">print("给预测评分:", model.score(X_test, y_test)) #评估预测结果</p> 
<p class="content">结果显示:0.63213234分!及格了!</p> 
<p class="content_112">给预测评分:0.63213234</p> 
<p class="content_105">小冰问道:“等等,什么及格了?总得有个标准。0.63213234分到底是怎么来的?”</p> 
<p class="content_105">咖哥说:“Sklearn线性回归模型的score属性给出的是R2分数,它是一个<span class="bold">机器学习模型的评估指标</span>,给出的是预测值的方差与总体方差之间的差异。要理解这个,需要一点儿统计学知识哦,现在你们只要知道,要比较不同的模型,都应采用相同的评估指标,在同样的标准下,哪个分数更高,就说明哪个模型更好!”</p> 
<p class="content">还有,刚才说过可以看这个机器学习的函数是什么样儿,对吧?现在可以用几行代码把它大致画出来:</p> 
<div class="content_106"> 
 <p class="content_105">import matplotlib.pyplot as plt #导入Matplotlib库</p> 
 <p class="content_105">#用散点图显示家庭收入中位数和房价中位数的分布</p> 
 <p class="content_105">plt.scatter(X_test.median_income, y_test, color='brown')</p> 
 <p class="content_105">#画出回归函数(从特征到预测标签)</p> 
 <p class="content_105">plt.plot(X_test.median_income, y_pred, color='green', linewidth=1)</p> 
 <p class="content_105">plt.xlabel('Median Income') #x轴:家庭收入中位数</p> 
 <p class="content_105">plt.ylabel('Median House Value') #y轴:房价中位数</p> 
 <p class="content_105">plt.show() #显示房价分布和机器学习到的函数模型</p> 
</div> 
<p class="content"><span class="italic">x</span>轴的特征太多,无法全部展示,我只选择了与房价关系最密切的“家庭收入中位数”median_income作为代表特征来显示散点图。下图中的点就是家庭收入/房价分布,而绿色线就是机器学习到的函数模型,很粗放,都是一条一条的线段拼接而成,但是仍然不难看出,这个函数模型大概拟合了一种线性关系。</p> 
<div class="pic"> 
 <img src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0038-0031.jpg"> 
 <p class="imgtitle">函数模型大概拟合了一种线性关系(请见339页彩色版插图)</p> 
</div> 
<p class="content">加州各个地区的平均房价中位数有随着该地区家庭收入中位数的上升而增加的趋势,而机器学习到的函数也同样体现了这一点。</p> 
<p class="content_105">“这说明什么呢,同学们?”咖哥自问自答,“物以类聚,人以群分,这显示的就是富人区的形成过程啊!”</p> 
<p class="content">好,现在咱们看一下Colab的界面,这个Jupyter Notebook代码加上一部分输出大致如下图所示。</p> 
<div class="pic"> 
 <img src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0039-0032.jpg"> 
 <p class="imgtitle">Colab程序</p> 
</div> 
<p class="content">至此,一个很简单的机器学习任务就被完成了!麻雀虽小,五脏俱全。不到20行的代码,我们已经应用线性回归算法,预测了大概3000多个加州地区的房价中位数。当然,很多代码你们可能还是一知半解的。而且这个示例很粗糙,没有做特征工程,没有数据预处理,机器学习模型的选择也很随意。但是那并不会影响,随着更深入的学习,同学们会越来越清楚自己在做什么,而且在以后的课程中,还会深入剖析Linear Regression这个模型背后到底隐藏了些什么。</p> 
<p class="content_105">“现在,最重要的是,你们已经能够开始利用Colab编写自己的Python程序代码了。Jupyter Notebook正是为新手训练所准备的。一边试试代码,一边写一些文字笔记,这真是一种享受啊……”咖哥似乎十分开心,抿了一口手边的咖啡……</p> 
<h3 class="thirdTitle" id="bw13"><a >1.2.4 在Kaggle上参与机器学习竞赛</a></h3> 
<p class="content">下面大力推荐我的最爱—Kaggle网站,同学们搜一下“Kaggle”就能找到它。对于机器学习爱好者来说,Kaggle大名鼎鼎,而且特别实用。它是一个数据分析和机器学习竞赛平台:企业和研究者在上面发布数据,数据科学家基于这些数据进行竞赛以创建更好的机器学习模型。Kaggle的口号是Making Data Science a Sport(使数据科学成为一项运动)。</p> 
<p class="content">Kaggle就是一个机器学习小项目集散地。在这里,你们几乎可以找到你们想要的任何东西:竞赛(也就是机器学习实战项目)、数据集、源代码、课程、社区。这里是机器学习初学者的天堂。而且,你们有没有觉得Kaggle、Kaggle这发音很像“咖哥、咖哥”?</p> 
<p class="content_105">同学们忽然觉得咖哥相当自恋。</p> 
<p class="content_105">咖哥浑然不觉,接着说:“好,现在你们去那儿先注册一个账号吧。”</p> 
<p class="content">账号注册好之后,在Notebooks中单击“New Notebook”,就可以新建一个自己的机器学习应用程序,页面会提示是创建一个比较纯粹的Python Script还是一个Notebook,如下图所示。不过,我还是更喜欢图文并茂的Notebook。</p> 
<div class="pic"> 
 <img src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0040-0033.jpg"> 
 <p class="imgtitle">Kaggle:新建Notebook</p> 
</div> 
<p class="content_101"><img alt="" class="h-pic" src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0040-0034.jpg">咖哥发言</p> 
<p class="content">同学们注意,Kaggle里面的Notebook原来叫作Kernel,后来跟着其他网站的习惯,统一用Notebook。然而在Kaggle网站中,很多地方还是沿用Kernel这个名称。</p> 
<p class="content">比起Colab,Kaggle最大的优势可能在于自带很多的<span class="bold">数据集</span>(Datasets),这些数据集各有特色。在Kaggle中,“牛人”们纷纷创建自己的Notebook针对同一个数据集进行机器学习实战,然后互相比拼谁的更优秀,如下图所示。这种学习方式也大大地节省了自己搜集数据的时间。</p> 
<div class="pic"> 
 <img src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0040-0035.jpg"> 
 <p class="imgtitle">Kaggle中的数据集:可以基于数据集创建Notebook</p> 
</div> 
<p class="content">如何把Kaggle Notebook和数据集链接在一起呢?主要有以下几种方法。</p> 
<p class="content">(1)选择任何一个数据集,然后单击“New Notebook”按钮,就可以基于这个数据集开始自己的机器学习之旅了。</p> 
<p class="content">(2)选择Datasets之后,单击“Notebooks”,看看各路“大咖”针对这个数据集已经开发出了一些什么东西,然后喜欢的话单击“Copy and Edit”,复制其Notebook,慢慢研习,在“巨人的肩膀上”继续开发新模型。这里的课程中也是借鉴了一些大咖们的Notebooks代码,当然我已经通过邮件得到了他们的授权。</p> 
<p class="content">(3)直接选择Notebooks,单击“New Notebook”,有了Notebook之后,然后再通过“File”→“Add or upload dataset”菜单项选择已有的数据集,或者把自己的新数据集上传到Kaggle,如下图所示。</p> 
<div class="pic"> 
 <img src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0041-0036.jpg"> 
 <p class="imgtitle">上传自己的新数据集到Kaggle</p> 
</div> 
<p class="content">我个人比较喜欢用Kaggle而不是用Colab,因为Kaggle强在其大量的共享数据集和大咖们无私分享的Notebooks。另外,要在Colab中使用自己的数据集,需要先上传到Google Drive,然后同特定方式读取,这样总觉得操作起来多了一些麻烦,不如Kaggle的Datasets用起来那么直接。</p> 
<p class="content">而且Kaggle也有GPU,型号还是比T80更新的P100!通过Notebooks页面右侧的Settings选项(如下图所示),咱也能用上它(不过好像每周只有几小时的GPU配额)!</p> 
<div class="pic"> 
 <img src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0041-0037.jpg"> 
 <p class="imgtitle">Kaggle的GPU选项</p> 
</div> 
<p class="content">还有,TPU是比GPU更快的硬件加速器,Google和Kaggle都免费提供给大家使用。另外,也有人声称Colab比Kaggle Notebook更稳定,比较不容易在网页的刷新过程中丢失代码。这只是道听途说而已,我使用Kaggle的时候还没出现过丢失代码的情况。</p> 
<h3 class="thirdTitle" id="bw14"><a >1.2.5 在本机上“玩”机器学习</a></h3> 
<p class="content">如果还是希望在自己的电脑上安装一个开发工具,那么Anaconda是首选。Anaconda下载页面如下图所示。</p> 
<div class="pic"> 
 <img src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0042-0038.jpg"> 
 <p class="imgtitle">Anaconda下载页面</p> 
</div> 
<p class="content">Anaconda是当前数据科学领域流行的Python编辑环境之一,安装使用都极为简单。从上面的图示中也可以看出,其中预装了很多Python数据科学工具库,比如Num Py、Pandas等。而且支持多种操作系统,比如Windows、mac OS,以及Linux。</p> 
<p class="content">这里不赘述具体安装过程了,在官网上跟着说明进行安装即可。</p> 
<p class="content">由于Anaconda封装了很多的Python库,安装之后在本机创建Jupyter Notebook非常容易。而且无论是在线还是本机运行,Jupyter Notebook最大优势是简单易用、强交互、易展示结果,即可视化功能很强,我们可以查看每一段代码的输出与运行效果。</p> 
<p class="content">作为入门学习工具,Jupyter Notebook非常适合,但它也有局限性,比如版本控制难、不支持代码调试(debug)等。因此,在大型、复杂的机器学习和工程实践中,还需要配合更为强大的开发环境来使用。同学们进阶之后,也可以尝试用一用Py Charm这样的能够调试,以及便捷地查看数组结构和交互式图表的Python集成开发环境 (IDE),如下图所示。</p> 
<div class="pic"> 
 <img src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0042-0039.jpg"> 
 <p class="imgtitle">Python集成开发环境—Py Charm</p> 
</div>