社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

代码实现! 教学视频!Python学习者最易上手的机器学习漫游指南

大数据文摘 • 6 年前 • 493 次点击  

大数据文摘作品,转载要求见文末

作者 | Conor Dewey

编译 | 竹子,徐凌霄,Aileen


导读:半路出山想迅速上手Python做机器学习?这篇文章就是你需要的实用指南。

毋庸置疑,近来机器学习人气日益高涨,逐渐在流行词榜单上占据一席之地。机器学习算法繁多,到底该选择哪一种处理相关数据是困扰很多学习者的问题。本文将以一种清晰简明的方式,解释并实践最常见的几种机器学习算法。

接下来,我们将罗列8种最常见火爆的机器学习算法,通过Python,将它们分别适用同一个经典数据集Iris(线性回归和逻辑回归除外),进而分辨出不同算法在预测准确率、模型建立过程、对数据集的使用方式等方向的异同。每一种算法后都将附上Python实现代码和演示视频。

本期共计8篇教学小视频,请后台回复 “代码”2字获取相关资源。

8大算法

本文中将覆盖共8种不同的机器学习算法(后续会有更多)。阅读时本指南时,你可以自由的随意翻翻或跳过任何一个已经熟悉的算法。请根据着个人需求使用这份指南。闲话少说,本文将分为以下及部分。

1.线性回归

2.逻辑回归

3.决策树

4.支持向量机

5.KNN 临近算法

6.随机森林

7. K-Means聚类

8.主成分分析

若尝试使用他人的代码时,结果你发现需要三个新的模块包而且本代码是用旧版本的语言写出的,这将让人感到无比沮丧。为了大家更加方便,我将使用Python3.5.2并会在下方列出了我在做这些练习前加载的模块包。我也从UCI机器学习库中下载了Diabetes和Iris数据集作为样本数据。

如果你希望跳过这些内容,仅想看看全部代码,你可以直接前往Github上查看(https://github.com/conordewey3/HitchHikers-Guide-Machine-Learning)

线性回归

讲解

线性回归应该是机器学习原理中最流行也是最不受重视的算法了。在比较模型表现时,许多数据科学家总是会忽略这一事实,即比起复杂更应该选择简单的方法。

总之,线性回归是一种基于连续型变量进行预测的有监督学习算法。线性回归适用范围广泛,它既能对单一变量做回归(简单线性回归)也可以对多维特征做回归(多元线性回归)。他的工作原理是,对变量分配最佳权重以产生的一条直线(ax+b)用于预测结果。请查看以下视频了解更多详尽内容。


现在你应该已经掌握了线性回归的概念,接下来让我们看看怎样在Python中实现它。


准备工作

  1. from sklearn import linear_model

  1. df = pd.read_csv(‘linear_regression_df.csv’)

  1. df.columns = [‘X’, ‘Y’]

  1. df.head()

可视化

  1. sns.set_context(“notebook”, font_scale=1.1)

  1. sns.set_style(“ticks”)

  1. sns.lmplot(‘X’,’Y’, data=df)

  1. plt.ylabel(‘Response’)

  1. plt.xlabel(‘Explanatory’)

实现

  1. linear = linear_model.LinearRegression()

  1. trainX = np.asarray(df.X[20:len(df.X)]).reshape(-1, 1)

  1. trainY = np.asarray(df.Y[20:len(df.Y)]).reshape(-1, 1)

  1. testX = np.asarray(df.X[:20]).reshape(-1, 1)

  1. testY = np.asarray(df.Y[:20]).reshape(-1, 1)

  1. linear.fit(trainX, trainY)

  1. linear.score(trainX, trainY)

  1. print(‘Coefficient: \n’, linear.coef_)

  1. print(‘Intercept: \n’, linear.intercept_)

  1. print(‘R² Value: \n’, linear.score(trainX, trainY))

  1. predicted = linear.predict(testX)


逻辑回归

讲解

逻辑回归是有监督分类算法的一种,对预测离散变量非常有效。一种典型的用法是用逻辑回归方程预测事件在0到1之间发生的概率。

当我第一次学习逻辑回归时,以为是这只是一个小众工具,并没有引起十分的注意。后来我才发现,这种想法真是大错特错。逻辑回归的一些潜在概念在机器学习其他算法例如神经网络中也有用到。请大家牢记这一点,然后查看下面的视频了解更多内容。


现在你已经掌握了逻辑回归的一些概念,让我们在Python中加以实现。

准备工作

  1. from sklearn.linear_model import LogisticRegression

  1. df = pd.read_csv(‘logistic_regression_df.csv’)

  1. df.columns = [‘X’, ‘Y’]

  1. df.head()

可视化

  1. sns.set_context(“notebook”, font_scale=1.1)

  1. sns.set_style(“ticks”)

  1. sns.regplot(‘X’,’Y’, data=df, logistic=True)

  1. plt.ylabel(‘Probability’)

  1. plt.xlabel(‘Explanatory’)

实现

  1. logistic = LogisticRegression()

  1. X = (np.asarray(df.X)).reshape(-1, 1)

  1. Y = (np.asarray(df.Y)).ravel()

  1. logistic.fit(X, Y)

  1. logistic.score(X, Y)

  1. print(‘Coefficient: \n’, logistic.coef_)

  1. print(‘Intercept: \n’, logistic.intercept_)

  1. print(‘R² Value: \n’, logistic.score(X, Y))


决策树

讲解

决策树也是有监督学习的一种,即可用于分类也可用于回归。在我的经验里,他们主要用于分类。模型先接受输入的一种情况,然后沿着树枝向下走,依据设计的条件检测重要变量。根据结果,选择继续往左边的子枝走还是往右边的子枝走,如此重复。一般整个过程中,最重要的特征会更靠近树的根部。

决策树正变得越来越受欢迎,而且任何项目的数据科学家都能用它作为一种强分类算法,尤其与随机是森林,Boosting 算法和Bagging 算法一起使用时。再一次,使用下方的视频更深入了解决策树的基础功能。


现在你知道决策树以及它怎样运作了,让我们去Python中实践一下。

准备工作

  1. from sklearn import tree

  1. df = pd.read_csv(‘iris_df.csv’)

  1. df.columns = [‘X1’, ‘X2’, ‘X3’, ‘X4’, ‘Y’]

  1. df.head()

实现

  1. from sklearn.cross_validation import train_test_split

  1. decision = tree.DecisionTreeClassifier(criterion=’gini’)

  1. X = df.values[:, 0:4]

  1. Y = df.values[:, 4]

  1. trainX, testX, trainY, testY = train_test_split( X, Y, test_size = 0.3)

  1. decision.fit(trainX, trainY)

  1. print(‘Accuracy: \n’, decision.score(testX, testY))

可视化

  1. from sklearn.externals.six import StringIO 

  1. from IPython.display import Image

  1. import pydotplus as pydot

  1. dot_data = StringIO()

  1. tree.export_graphviz(decision, out_file=dot_data)

  1. graph = pydot.graph_from_dot_data(dot_data.getvalue())

  1. Image(graph.create_png())


支持向量机

讲解

支持向量机,又称SVM,是一种通过在不同类别的数据间生成一条分界线实现分类的知名的有监督分类算法。简单来说,通过计算最优分割平面,使得属于两个不同类的数据点间隔最大,从而得到分类向量。

分类向量一般被默认或被视为线性,然而不一定非要这样。如果核函数不是默认的高斯函数或线性函数,分类向量也可以是非线性的形式。关于SVM还有很多可以介绍,请继续观看指导视频。后台回复 “代码”2字获取相关资源。)

现在你已经了解支持向量机了,让我们在Python中一起实践一下。

准备工作

  1. from sklearn import svm

  1. df = pd.read_csv(‘iris_df.csv’)

  1. df.columns = [‘X4’, ‘X3’, ‘X1’, ‘X2’, ‘Y’]

  1. df = df.drop([‘X4’, ‘X3’], 1)

  1. df.head()

实现

  1. from sklearn.cross_validation import train_test_split

  1. support = svm.SVC()

  1. X = df.values[:, 0:2]

  1. Y = df.values[:, 2]

  1. trainX, testX, trainY, testY = train_test_split( X, Y, test_size = 0.3)

  1. support.fit(trainX, trainY)

  1. print(‘Accuracy: \n’, support.score(testX, testY))

  1. pred = support.predict(testX)

可视化

  1. sns.set_context(“notebook”, font_scale=1.1)

  1. sns.set_style(“ticks”)

  1. sns.lmplot(‘X1’,’X2', scatter=True, fit_reg=False, data=df, hue=’Y’)

  1. plt.ylabel(‘X2’)

  1. plt.xlabel(‘X1’)


KNN邻近算法

讲解

K最邻近分类算法,或缩写为KNN,是一种有监督学习算法,专门用于分类。算法先关注不同类的中心,对比样本和类中心的距离(通常用欧几里得距离方程)。如果一个样本中的大多数属于某一个类别,则该样本都归属于这个类别。

你已经了解了KNN算法的内在概念,让我们在Python中实践一下。

准备工作

  1. from sklearn.neighbors import KNeighborsClassifier

  1. df = pd.read_csv(‘iris_df.csv’)

  1. df.columns = [‘X1’, ‘X2’, ‘X3’, ‘X4’, ‘Y’]

  1. df = df.drop([‘X4’, ‘X3’], 1)

  1. df.head()

可视化

  1.  sns.set_context(“notebook”, font_scale=1.1)

  1. sns.set_style(“ticks”)

  1. sns.lmplot(‘X1’,’X2', scatter=True, fit_reg=False, data=df, hue=’Y’)

  1. plt.ylabel(‘X2’)

  1. plt.xlabel(‘X1’)

实现

  1. from sklearn.cross_validation import train_test_split

  1. neighbors = KNeighborsClassifier(n_neighbors=5)

  1. X = df.values[:, 0:2]

  1. Y = df.values[:, 2]

  1. trainX, testX, trainY, testY = train_test_split( X, Y, test_size = 0.3)

  1. neighbors.fit(trainX, trainY)

  1. print(‘Accuracy: \n’, neighbors.score(testX, testY))

  1. pred = neighbors.predict(testX)


随机森林

讲解

随机森林是一种流行的有监督集成学习算法。集成的意思是把许多”弱学习器”结合在一起,形成一个强预测器。在本例中,每一个随机生成的决策树都是一个弱学习器,放在一起成为了一个强预测器—随机森林。后台获取相关视频,介绍更多随机森林背后的原理。

知道了随机森林的运作原理,到了在Python中实践的时间了。

准备工作

  1. from sklearn.ensemble import RandomForestClassifier

  1. df = pd.read_csv(‘iris_df.csv’)

  1. df.columns = [‘X1’, ‘X2’, ‘X3’, ‘X4’, ‘Y’]

  1. df.head()

实现

  1. from sklearn.cross_validation import train_test_split

  1. forest = RandomForestClassifier()

  1. X = df.values[:, 0:4]

  1. Y = df.values[:, 4]

  1. trainX, testX, trainY, testY = train_test_split( X, Y, test_size = 0.3)

  1. forest.fit(trainX, trainY)

  1. print(‘Accuracy: \n’, forest.score(testX, testY))

  1. pred = forest.predict(testX)


K-Means 聚类算法

讲解

K-Means算法是一种流行的无监督学习分类算法,主要用于解决聚类问题。K 是用户预输入的分类数量。算法先随机选择K个点,然后用距离算法将剩下的对象分组,最终达到最优聚类。模型的好坏主要取决于数据科学家对K值的设定。按照惯例,后台获取相关视频了解更多内容。

现在我们已经对K-Means聚类了解更多,也明白它的原理了。让我们在Python中实现一下它的算法。

准备工作

  1. from sklearn.cluster import KMeans

  1. df = pd.read_csv(‘iris_df.csv’)

  1. df.columns = [‘X1’, ‘X2’, ‘X3’, ‘X4’, ‘Y’]

  1. df = df.drop([‘X4’, ‘X3’], 1)

  1. df.head()

实现

  1. from sklearn.cross_validation import train_test_split

  1. kmeans = KMeans(n_clusters=3)

  1. X = df.values[:, 0:2]

  1. kmeans.fit(X)

  1. df[‘Pred’] = kmeans.predict(X)

  1. df.head()

可视化

  1. sns.set_context(“notebook”, font_scale=1.1)

  1. sns.set_style(“ticks”)

  1. sns.lmplot(‘X1’,’X2', scatter=True, fit_reg=False, data=df, hue = ‘Pred’)


PCA主成分分析

讲解

主成分分析(PCA)是一种降维算法,可以为数据科学家做很多事。最主要的是,当模型有成百上千个不同特征需要处理时,主成分分析能极大地减少模型计算量。这是一种无监督模型,但使用者依然需要分析降维后的结果,确保其能保持原数据集95%左右的信息。关于主成分分析还有很多内容可以说,所以请一定观看以下视频。(视频资源,回复 “代码”2字获取相关资源。)

现在我们了解了更多主成分分析和它的原理,让我们在Python中实践一下。

准备工作

  1. from sklearn import decomposition

  1. df = pd.read_csv(‘iris_df.csv’)

  1. df.columns = [‘X1’, ‘X2’, ‘X3’, ‘X4’, ‘Y’]

  1. df.head()

实现

  1. from sklearn import decomposition

  1. pca = decomposition.PCA()

  1. fa = decomposition.FactorAnalysis()

  1. X = df.values[:, 0:4]

  1. Y = df.values[:, 4]

  1. train, test = train_test_split(X,test_size = 0.3)

  1. train_reduced = pca.fit_transform(train)

  1. test_reduced = pca.transform(test)

  1. pca.n_components_

这份辅导指南仅简单介绍了当下流行的机器学习算法的皮毛, 希望它能在你们成为机器学习大师的旅程上有所帮助。

 原文链接:https://medium.freecodecamp.org/the-hitchhikers-guide-to-machine-learning-algorithms-in-python-bfad66adb378


优惠倒计时!

早鸟4.6折优惠仅剩3天!

教师3.7折优惠仅剩5天!

深度学习系列课程

大咖讲师直播

+

助教辅导答疑

+

云实验室足量GPU

充实高效的学习新体验!

详情见海报↓↓↓


关于转载

如需转载,请在开篇显著位置注明作者和出处(转自:大数据文摘 | bigdatadigest),并在文章结尾放置大数据文摘醒目二维码。无原创标识文章请按照转载要求编辑,可直接转载,转载后请将转载链接发送给我们;有原创标识文章,请发送【文章名称-待授权公众号名称及ID】给我们申请白名单授权。未经许可的转载以及改编者,我们将依法追究其法律责任。联系邮箱:zz@bigdatadigest.cn。

志愿者介绍


回复志愿者”加入我们


往期精彩文章

点击图片阅读

如何优雅地打开堆满数学公式的机器学习论文


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/JkMor0eJ4I
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3373
 
493 次点击