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

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

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

推荐下我自己创建的Python学习交流群935711829,这是Python学习交流的地方,不管你是小白还是大牛,小编都欢迎,不定期分享干货,包括我整理的一份适合零基础学习Python的资料和入门教程。

8大算法

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

1.线性回归

2.逻辑回归

3.决策树

4.支持向量机

5.KNN 临近算法

6.随机森林

7. K-Means聚类

8.主成分分析

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

如果你希望跳过这些内容,仅想看看全部代码,你可以直接前往Github上查看。

线性回归

讲解

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

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

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

准备工作

from sklearn import linear_model

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

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

df.head()

可视化

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

sns.set_style(“ticks”)

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

plt.ylabel(‘Response’)

plt.xlabel(‘Explanatory’)

实现

linear = linear_model.LinearRegression()

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

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

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

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

linear.fit(trainX, trainY)

linear.score(trainX, trainY)

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

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

print(‘R2 Value: \n’, linear.score(trainX, trainY))

predicted = linear.predict(testX)

逻辑回归

讲解

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

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

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

准备工作

from sklearn.linear_model import LogisticRegression

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

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

df.head()

可视化

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

sns.set_style(“ticks”)

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

plt.ylabel(‘Probability’)

plt.xlabel(‘Explanatory’)

实现

logistic = LogisticRegression()

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

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

logistic.fit(X, Y)

logistic.score(X, Y)

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

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

print(‘R2 Value: \n’, logistic.score(X, Y))

决策树

讲解

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

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

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

准备工作

from sklearn import tree

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

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

df.head()

实现

from sklearn.cross_validation import train_test_split

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

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

Y = df.values[:, 4]

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

decision.fit(trainX, trainY)

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

可视化

from sklearn.externals.six import StringIO

from IPython.display import Image

import pydotplus as pydot

dot_data = StringIO()

tree.export_graphviz(decision, out_file=dot_data)

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

Image(graph.create_png())

支持向量机

讲解

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

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

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

准备工作

from sklearn import svm

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

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

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

df.head()

实现

from sklearn.cross_validation import train_test_split

support = svm.SVC()

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

Y = df.values[:, 2]

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

support.fit(trainX, trainY)

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

pred = support.predict(testX)

可视化

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

sns.set_style(“ticks”)

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

plt.ylabel(‘X2’)

plt.xlabel(‘X1’)

KNN邻近算法

讲解

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

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

准备工作

from sklearn.neighbors import KNeighborsClassifier

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

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

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

df.head()

可视化

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

sns.set_style(“ticks”)

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

plt.ylabel(‘X2’)

plt.xlabel(‘X1’)

实现

from sklearn.cross_validation import train_test_split

neighbors = KNeighborsClassifier(n_neighbors=5)

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

Y = df.values[:, 2]

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

neighbors.fit(trainX, trainY)

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

pred = neighbors.predict(testX)

随机森林

讲解

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

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

准备工作

from sklearn.ensemble import RandomForestClassifier

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

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

df.head()

实现

from sklearn.cross_validation import train_test_split

forest = RandomForestClassifier()

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

Y = df.values[:, 4]

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

forest.fit(trainX, trainY)

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

pred = forest.predict(testX)

K-Means 聚类算法

讲解

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

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

准备工作

from sklearn.cluster import KMeans

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

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

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

df.head()

实现

from sklearn.cross_validation import train_test_split

kmeans = KMeans(n_clusters=3)

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

kmeans.fit(X)

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

df.head()

可视化

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

sns.set_style(“ticks”)

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

PCA主成分分析

讲解

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

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

准备工作

trom sklearn import decomposition

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

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

df.head()

实现

from sklearn import decomposition

pca = decomposition.PCA()

fa = decomposition.FactorAnalysis()

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

Y = df.values[:, 4]

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

train_reduced = pca.fit_transform(train)

test_reduced = pca.transform(test)

pca.n_components_

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

原文地址:https://www.cnblogs.com/baijindashen/p/10053014.html

时间: 2024-10-05 21:09:36

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

用 Python 做机器学习不得不收藏的重要库

Python通常被应用统计技术或者数据分析人员当做工作中的首选语言.数据科学家也会用python作为连接自身工作与WEB 应用程序/生产环境集成中. Python在机器学习领域非常出色.它具有一致的语法.更短的开发时间和灵活性,非常适合开发能够直接插入生产系统的复杂模型和预测引擎. Python的一个最大的资产是其广泛的库. 库是一组用给定语言编写的程序和功能的集合.一组健壮的库可以使开发人员更容易执行复杂的任务,而无需重写许多代码. 机器学习很大程度上是基于数学.具体来说就是数学优化.统计和概

使用Python做机器学习的准备工作

机器学习的入门书籍<机器学习实战>使用的语言是python.下面介绍利用Python开始"机器学习"的准备工作.(环境:CentOS 7) 1, 两个重要的包 NumPy 和 SciPy.(http://scipy.org/scipylib/download.html )主要是处理数值运算,矩阵操作等. 注:Sci是Science的缩写. 官网介绍了安装方法,可以手动安装,也可以使用yum.(numpy 和 scipy  在默认的软件源有提供) 需要说明的是,scipy是依

Python——学好Python必读的几篇文章

作为脚本语言Python上手容易,但要学好Python能写出一手漂亮的.Pythonic的Python代码并非一日之功,本文的目的在于推荐 一些优秀的Python相关的文章(至于书大家可以看dip.learning python和官方手册去),让你在成长为一名Python高手的路上少走一点弯路.注:文章都是英文的,学好Python读懂英文资料这是必须的了. 1. PEP8 Style Guide for Python Code 排第一的当属Python的编码规范PEP8,这个就不用我多说吧,无论

从Python开始机器学习

目前机器学习红遍全球.男女老少都在学机器学习模型,分类器,神经网络和吴恩达.你也想成为一份子,但你该如何开始? 在这篇文章中我们会讲Python的重要特征和它适用于机器学习的原因,介绍一些重要的机器学习包,以及其他你可以获取更详细资源的地方. 加qq群813622576免费领取学习资料 为什么用Python做机器学习 Python很适合用于机器学习.首先,它很简单.如果你完全不熟悉Python但是有一些其他的编程经验(C或者其他编程语言),要上手是很快的.其次,Python的社区很强大.这使得P

12岁的少年教你用Python做小游戏

原地址:http://blog.jobbole.com/46308/ 本文由 伯乐在线 - 贱圣OMG 翻译自 Julian Meyer.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. [感谢@贱圣OMG 的热心翻译.如果其他朋友也有不错的原创或译文,可以尝试推荐给伯乐在线.] 你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂! 在这个教程里,你要学做一个叫<兔子和獾>的塔防游戏,兔子作为英雄,需要在城堡里抵御獾的进攻. 为了写这个游戏的代码,你将会用Python.好吧,我

用Python开始机器学习(2:决策树分类算法)

http://blog.csdn.net/lsldd/article/details/41223147 从这一章开始进入正式的算法学习. 首先我们学习经典而有效的分类算法:决策树分类算法. 1.决策树算法 决策树用树形结构对样本的属性进行分类,是最直观的分类算法,而且也可以用于回归.不过对于一些特殊的逻辑分类会有困难.典型的如异或(XOR)逻辑,决策树并不擅长解决此类问题. 决策树的构建不是唯一的,遗憾的是最优决策树的构建属于NP问题.因此如何构建一棵好的决策树是研究的重点. J. Ross Q

python入门机器学习,3行代码搞定线性回归

本文着重是重新梳理一下线性回归的概念,至于几行代码实现,那个不重要,概念明确了,代码自然水到渠成. "机器学习"对于普通大众来说可能会比较陌生,但是"人工智能"这个词简直是太火了,即便是风云变化的股市中,只要是与人工智能.大数据.云计算相关的概念股票都会有很好的表现.机器学习是实现人工智能的基础,今天早上看了美国著名演员威尔斯密斯和世界最顶级的机器人进行对话的视频,视频中的机器人不论从语言还是表情都表达的非常到位,深感人工智能真的离我们越来越近了,所以学习人工智能前

用Python做了鉴黄模型,内含多20万张“不可描述”图片

GitHub出现一个名为"NSFW Model"的项目.通俗一点来说,就是一个鉴黄模型. 这个模型,使用的数据来自前不久量子位介绍的那个数据集,内含多20万张"不可描述"图片. 同时,这个模型也被项目的贡献者做成了Demo. 既然有了Demo,那肯定是免不了测试一番-- Demo效果 Demo网站十分简单,进去之后能做什么一目了然. 上传图片之后,是自动给出结果,不需要点击其他按钮.但有时候不会给出结果-..还有待完善. 学习过程中有不懂的可以加入我们的学习交流秋秋

用Python开始机器学习(7:逻辑回归分类) --好!!

from : http://blog.csdn.net/lsldd/article/details/41551797 在本系列文章中提到过用Python开始机器学习(3:数据拟合与广义线性回归)中提到过回归算法来进行数值预测.逻辑回归算法本质还是回归,只是其引入了逻辑函数来帮助其分类.实践发现,逻辑回归在文本分类领域表现的也很优秀.现在让我们来一探究竟. 1.逻辑函数 假设数据集有n个独立的特征,x1到xn为样本的n个特征.常规的回归算法的目标是拟合出一个多项式函数,使得预测值与真实值的误差最小