如何学机械编程基础课本(100天搞定机器学习编程,这是一份火爆GitHub的入门课)

100天搞定机器学习编程,这是一份火爆GitHub的入门课

问耕 栗子 发自 麦蒿寺

量子位 出品 | 群众号 QbitAI

你是想喝一辈子糖水,照旧想用AI改动天下?

但怎样想是一回事,怎样做屡屡是另一回事。学习和健身一样,不少人都停留在外表上,有种种托词不曾付诸实行。

为此,YouTube网红Siraj Raval倡导了一个挑唆赛:#100DaysOfMLCode。

这个挑唆赛意在召唤各位举动起来,从到场活动的那天起,天天最少破费1小时的时间来学习提升大概使用编程,一连坚持100天,从而更好的了解和把握机器学习这个强壮的东西。积跬步、至千里。

并且到场这个活动,还要使用#100DaysOfMLCode这个标签,在交际平台逐日“打卡”,公开纪录本人的事情。

你想在这100天里学到什么,大概完成一个项目全凭自主决定。各位的选择五花八门,此中有一个小哥的学习方案,很快引发各位的眷注。

这个小哥名叫Avik Jain(重名的不少),他的百天方案,是从机器学习的基本看法起步,逐层递进,内容比力合适初学者。

这个100天搞定机器学习编程的项目,如今以前是爆红GitHub,很快累积了3000多标星,在Twitter上,也有一大票人热捧这个项目。

同是百天方案,这个有什么特别之处?三点:

1、超赞的学习图片

2、配套的代码

3、相应的数据集

对这个项目标评价,多以awesome、great、fantastic、outstanding、perfect等评价,各位纷繁表现感激(并祝楼主善人终身安全)。

项目地点在此:

https://github.com/Avik-Jain/100-Days-Of-ML-Code

请你一定保藏好。

现在作者的100天方案,以前举行到第25天,已有的内容包含:

数据预处理、线性回归、逻辑回归、K最临近算法、支持向量机、深度学习专项课程等,最新的内容以前讲到决定树及完成等。

量子位摘录此中的部老实容,做个示例。

第一天

看上去,真是优美的一天。

第一步:导入一些库

Numpy和Pandas这两个,好坏常紧张的库。

Numpy内里有种种数学函数,Pandas是用来导入数据集、办理数据集的。

1 import numpy as np

2 import pandas as pd

第二步:导入数据集

数据集通常是.csv格式。CSV文件,是把表格数据,存储成纯文本。每一行是一个数据纪录 (Data Record) 。

在Pandas库内里,用read_csv的办法,来读取当地的CSV文件,每个文件是一个数据帧 (Data Frame) 。

给每个数据帧里的自变量和因变量,分散做矩阵和向量。

1 dataset = pd.read_csv('Data.csv')

2 X = dataset.iloc[ : , :-1].values

3 Y = dataset.iloc[ : , 3].values

第三步:处理缺失数据

我们获取的数据,通常是异构数据。招致缺失数据 (Missing Data) 的缘故有很多,必要处理一下,模子的体现才不会减损。

可以把缺失的数据,用整列数据的均匀值大概中位数代替。拿sklearn.preprocessing里的Imputer来处理。

1 from sklearn.preprocessing import Imputer

2 imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)

3 imputer = imputer.fit(X[ : , 1:3])

4 X[ : , 1:3] = imputer.transform(X[ : , 1:3])

第四步:编码分类数据

分类数据 (Categorical Data) 里的变量,不包含数值,只包含分类标签

好比,是/否,性别,婚姻形态,如此的变量,是没办法当成数值直接运算的。

以是,才必要把它们编码成可以运算的数值。用sklearn.preprocessing内里的LabelEncoder就可以了。

1 from sklearn.preprocessing import LabelEncoder, OneHotEncoder

2 labelencoder_X = LabelEncoder()

3 X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])

创建个假造变量:

1 onehotencoder = OneHotEncoder(categorical_features = [0])

2 X = onehotencoder.fit_transform(X).toarray()

3 labelencoder_Y = LabelEncoder()

4 Y = labelencoder_Y.fit_transform(Y)

第五步:分开练习集和测试集

要把数据集分红两半,一个当练习集,另一个当测试集。

寻常来说,可以按80/20如此分,练习集大一些。用sklearn.crossvalidation内里的train_test_split() 来分,就行了。

1 from sklearn.cross_validation import train_test_split

2 X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)

第六步:特性缩放

大局部机器学习算法,都市拿两个数据点之间的欧几里得距离 (Euclidean Distance) 做盘算。

如此一来,假如一个特性比其他特性的范围值更大,这个特性值就会成为主导。

而我们渴望其他特性,也取得划一的器重,以是用特性标准化 (Feature Standardization) 来处理这个成绩。

sklearn.preprocessing内里的StandardScalar,就派上用场了。

1 from sklearn.preprocessing import StandardScaler

2 sc_X = StandardScaler()

3 X_train = sc_X.fit_transform(X_train)

4 X_test = sc_X.fit_transform(X_test)

第二天

今天,要做的是简便线性回归 (Simple Linear Regression) 。

就是拿已知的那些 (x,y) 数据点,做出一条线性的趋向,来猜测其他x值,对应的y。

第一步:数据预处理

但是,就是把第一天做过的事变,复习一下:

· 导入一些库

· 导入数据集

· 处理缺失数据

· 把数据集分红练习集和测试集

· 特性缩放的话,交给库了

1 import pandas as pd

2 import numpy as np

3 import matplotlib.pyplot as plt

4

5 dataset = pd.read_csv('studentscores.csv')

6 X = dataset.iloc[ : , : 1 ].values

7 Y = dataset.iloc[ : , 1 ].values

8

9 from sklearn.cross_validation import train_test_split

10 X_train, X_test, Y_train, Y_test = train_test_split( X, Y, test_size = 1/4, random_state = 0)

第二步:拟合练习集

要把数据集,拟合到简便线性回归模子内里去,可以用sklearn.linear_model内里的LinearRegression来处理。

LinearRegression内里,建一个叫做regressor的目标。

然后,把regressor拟合到数据集里去,用fit() 就行了。

1 from sklearn.linear_model import LinearRegression

2 regressor = LinearRegression()

3 regressor = regressor.fit(X_train, Y_train)

第三步:猜测后果

如今,用测试集来猜测一下。

把输入存到一个向量Y_pred内里。然后,用LinearRegression内里的猜测办法,来支配上一步练习过的regressor

1 Y_pred Y_pred == regressor.predict(X_test) regressor.predict(X_test)

第四步:可视化

最初一步,就是给猜测后果做个可视化。

matplotlib.pyplot做散点图,给练习集和测试集都做一下,看看猜测后果是不是接近真实。

练习集可视化:

1 plt.scatter(X_train , Y_train, plt.scatter(X_train , Y_train, colorcolor == ''redred'')

2 plt.plot(X_train , regressor.predict(X_train), ) plt.plot(X_train , regressor.p color ='blue')

测试集可视化:

1 plt.scatter(X_test , Y_test, color = 'red')

2 plt.plot(X_test , regressor.predict(X_test), color ='blue')

两件必要提示的事

总之,约莫就是外表这个样子。局部以前放出的信息图聚集如下,各位可以预览一下。

假如你也想入门大概提升本人的机器学习才能,无碍试试随着这个小哥一同砚习提高。固然这个项目满是英文,但并不难懂深邃,说不定还能特地提高一下英文水平,今后读paper也用取得~

另有两件事,必要提示一下。

1、这个项目以前开头汉化了

@zhyongquan 在GitHub上以前开头实验中文版,后果如下图所示。

不外现在只举行了第一天内容的汉化。假如你感兴致,可以持续眷注,大概到场汉化的举动中。地点在此:

https://github.com/Avik-Jain/100-Days-Of-ML-Code/issues/8

2、项目内容不克不及盲信

尽信书不如无书。这个学习项目,也不是百分百完全准确,好比第四天讲逻辑回归时的右下角配图,就被指出存在错误。

作者也允许将更新改正这个成绩。

就酱。

最初,再发一次这个项目标地点:

https://github.com/Avik-Jain/100-Days-Of-ML-Code

请你一定保藏好,假如能开头学习那就更好啦。

假如这种偏入门的内容不合适你,另有更多进阶大概具体项目完成的100天方案可供参考,渴望能协助你精进。

比如#100DaysOfMLCode挑唆赛倡导人Siraj Raval,就选择了在100天里,使用机器学习武艺,依据气温、降水、植被厘革等要素,猜测每周的登革热疫情,改良防疫的研讨方案和资源分派。

你也可以选择其他项目,大概在Twitter、GitHub等看看他人的100天挑唆,有没有你切合跟随的,大概全新启动你的挑唆。

对了Siraj Raval还在GitHub和YouTube上公布过很多其他机器学习课程,比如三个月学习机器学习,六周入门深度学习等。

干系地点在此:

https://github.com/llSourcell

总之,准则就是天天提高一点点。

加油。

诚挚招聘

量子位正在招募编纂/记者,事情地点在北京中关村。渴望有才华、有热情的同砚到场我们!干系细节,请在量子位群众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

?'?' ? 追踪AI武艺和产物新动态

如何学机械编程基础课本(100天搞定机器学习编程,这是一份火爆GitHub的入门课)(图1)

GM游戏 更多