百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

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

toyiye 2024-06-21 12:24 9 浏览 0 评论

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

作者 | 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(‘R2 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(‘R2 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

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码