火爆GitHub:100天搞定机器学习编程(超赞信息图+代码+数据集)

简介: 你是想喝一辈子糖水,还是想用AI改变世界?但怎么想是一回事,怎么做往往是另一回事。学习和健身一样,不少人都停留在口头上,有各种借口不曾付诸实施。

image

你是想喝一辈子糖水,还是想用AI改变世界?

但怎么想是一回事,怎么做往往是另一回事。学习和健身一样,不少人都停留在口头上,有各种借口不曾付诸实施。

为此,YouTube网红Siraj Raval发起了一个挑战赛:#100DaysOfMLCode。

image


这个挑战赛意在号召大家行动起来,从参与活动的那天起,每天至少花费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最邻近算法、支持向量机、深度学习专项课程等,最新的内容已经讲到决策树及实现等。

量子位摘录其中的部分内容,做个示例。

第一天


image

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

第一步:导入一些库

image

Numpy和Pandas这两个,是非常重要的库。

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

1import numpy as np
2import pandas as pd
第二步:导入数据集



image


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

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

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

1dataset = pd.read_csv('Data.csv')
2X = dataset.iloc[ : , :-1].values
3Y = dataset.iloc[ : , 3].values
第三步:处理缺失数据

image

我们获取的数据,通常是异构数据。导致缺失数据 (Missing Data) 的原因有很多,需要处理一下,模型的表现才不会减损。

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

1from sklearn.preprocessing import Imputer
2imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
3imputer = imputer.fit(X[ : , 1:3])
4X[ : , 1:3] = imputer.transform(X[ : , 1:3])
第四步:编码分类数据

image

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

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

所以,才需要把它们编码成能够运算的数值。用sklearn.preprocessing里面的LabelEncoder就可以了。

1from sklearn.preprocessing import LabelEncoder, OneHotEncoder
2labelencoder_X = LabelEncoder()
3X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])
创建个虚拟变量:

1onehotencoder = OneHotEncoder(categorical_features = [0])
2X = onehotencoder.fit_transform(X).toarray()
3labelencoder_Y = LabelEncoder()
4Y = labelencoder_Y.fit_transform(Y)
第五步:分开训练集和测试集


image

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

一般来说,可以按80/20这样分,训练集大一些。用sklearn.crossvalidation里面的train_test_split() 来分,就行了。

1from sklearn.cross_validation import train_test_split
2X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)
第六步:特征缩放



image

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

这样一来,如果一个特征比其他特征的范围值更大,这个特征值就会成为主导。

而我们希望其他特征,也得到同等的重视,所以用特征标准化 (Feature Standardization) 来解决这个问题。

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

1from sklearn.preprocessing import StandardScaler
2sc_X = StandardScaler()
3X_train = sc_X.fit_transform(X_train)
4X_test = sc_X.fit_transform(X_test)
第二天

image

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

image




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

第一步:数据预处理



image

其实,就是把第一天做过的事情,复习一下:

· 导入一些库
· 导入数据集
· 处理缺失数据
· 把数据集分成训练集和测试集
· 特征缩放的话,交给库了

1import pandas as pd
2import numpy as np
3import matplotlib.pyplot as plt
4
5dataset = pd.read_csv('studentscores.csv')
6X = dataset.iloc[ : , : 1 ].values
7Y = dataset.iloc[ : , 1 ].values
8
9from sklearn.cross_validation import train_test_split
10X_train, X_test, Y_train, Y_test = train_test_split( X, Y, test_size = 1/4, random_state = 0)
第二步:拟合训练集


image

要把数据集,拟合到简单线性回归模型里面去,可以用sklearn.linear_model里面的LinearRegression来解决。

在LinearRegression里面,建一个叫做regressor的对象。

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

1from sklearn.linear_model import LinearRegression
2regressor = LinearRegression()
3regressor = regressor.fit(X_train, Y_train)
第三步:预测结果

image

现在,用测试集来预测一下。

把输出存到一个向量Y_pred里面。然后,用LinearRegression里面的预测方法,来支配上一步训练过的regressor。

1Y_pred Y_pred == regressor.predict(X_test) regressor.predict(X_test)
第四步:可视化

image

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

用matplotlib.pyplot做散点图,给训练集和测试集都做一下,看看预测结果是不是接近真实。

训练集可视化:

1plt.scatter(X_train , Y_train, plt.scatter(X_train , Y_train, colorcolor == ''redred'')
2plt.plot(X_train , regressor.predict(X_train), ) plt.plot(X_train , regressor.p color ='blue')
测试集可视化:

1plt.scatter(X_test , Y_test, color = 'red')
2plt.plot(X_test , regressor.predict(X_test), color ='blue')
两件需要提醒的事

总之,大概就是上面这个样子。部分已经放出的信息图集合如下,大家可以预览一下。

image

如果你也想入门或者提升自己的机器学习能力,不妨试试跟着这个小哥一起学习进步。虽然这个项目全是英文,但并不晦涩高深,说不定还能顺便提高一下英文水平,以后读paper也用得到~

还有两件事,需要提醒一下。

1、这个项目已经开始汉化了

@zhyongquan 在GitHub上已经开始尝试中文版,效果如下图所示。

image

不过目前只进行了第一天内容的汉化。如果你感兴趣,可以持续关注,或者加入汉化的行动中。地址在此:

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

总之,原则就是每天进步一点点。

加油。

原文发布时间为:2018-08-05
本文来自云栖社区合作伙伴“ 量子位”,了解相关信息可以关注“ 量子位”。

相关文章
|
22天前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习之线性回归与逻辑回归【完整房价预测和鸢尾花分类代码解释】
机器学习之线性回归与逻辑回归【完整房价预测和鸢尾花分类代码解释】
|
1月前
|
人工智能 搜索推荐 大数据
GitHub Copilot Enterprise登场,或将掀起编程界的ChatGPT革命!
【2月更文挑战第13天】GitHub Copilot Enterprise登场,或将掀起编程界的ChatGPT革命!
40 1
GitHub Copilot Enterprise登场,或将掀起编程界的ChatGPT革命!
|
22天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
1月前
|
机器学习/深度学习 自然语言处理 算法
机器学习-特征选择:如何用信息增益提升模型性能?
机器学习-特征选择:如何用信息增益提升模型性能?
52 1
|
4月前
|
运维 监控 Cloud Native
GitHub现新霸主!「Java并发编程实战攻略」竟是阿里内部顶级机密
随着经济环境下行,大厂降本增效、筛除了一部分冗余岗位,原本荒蛮的 IT 行业发展正在逐步进入正轨中。虽说依旧算是不温不火,但在今年的技术招聘市场上,Java 依旧是当仁不让的霸主! Java 有着极其成熟的生态,这个不用我多说; Java 在运维、可观测性、可监控性方面都有着非常优秀的表现; Java 也在积极应对容器化、云原生等大趋势,比如 Spring Boot 就已经全面拥抱云原生。 企业对 Java 的需求最大,对应着 Java 程序员的群体也最为庞大,有着 1200 万之多。换句话说,也是最“修罗场”的!
|
3月前
|
机器学习/深度学习 算法
机器学习 - [集成学习]Bagging算法的编程实现
机器学习 - [集成学习]Bagging算法的编程实现
32 1
|
2月前
|
机器学习/深度学习 算法 数据可视化
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-2
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
98 0
|
2月前
|
机器学习/深度学习 Ubuntu Linux
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-1
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
55 1
|
18天前
|
机器学习/深度学习 数据可视化 算法
【python】Python大豆特征数据分析 [机器学习版一](代码+论文)【独一无二】
【python】Python大豆特征数据分析 [机器学习版一](代码+论文)【独一无二】
|
1月前
|
机器学习/深度学习 算法 数据挖掘
Python机器学习代码
Python机器学习代码
17 0

热门文章

最新文章