6个套路入门ML:用鸢尾花data建立python机器学习的初步印象(一)

注:这是一篇翻译文章,来自于
Your First Machine Learning Project in Python Step-By-Step - Machine Learning Mastery**,标题为《Your First Machine Learning Project in PythonStep-By-Step》;即一步步带你入门第一个python机器学习项目;包括的内容有:1、python的机器学习需要哪些准备?2、导入数据3、数据的统计描述4、数据的可视化5、用一些算法进行估计6、进行一些预测。
就像作者在文后说的,通过用python做这个项目,不需要知道关于机器学习的专业性内容,只需要按照python代码把结果做出来,能够分析就行。
但是,我认为以机器学习之博大精深,这个项目只是管中窥豹,之所以把这篇文章拿出来,我认为它帮我们初步感受到了python机器学习的一整套基本流程,以及对机器学习的基本印象。
(一)事前的准备(本教程假定Python版本为2.7或3.5。)
在做机器学习之前,要安装5个库:scipy、numpy、matplotlib、pandas、sklearn
这5个库主要是用来进行数值运算、计算、绘图、数据分析以及数据挖掘的库,具体每个库作用及其安装可以去网上搜索就知道了,这点作者也在文中说了一下。
值得注意的是python3版本在windows系统下安装scipy,需要去网站:
Python Extension Packages for Windows**,下载whl文件,然后再去安装。
但是,在这之前,由于Scipy的安装需要依赖MKL库,官方的Numpy不包含MKL,故从Python Extension Packages for Windows** 下载合适版本的包含MKL库的第三方Numpy+mkl库,然后在cmd下进入到Python安装目录下的scripts文件下使用 pipinstall 路径+whl文件来安装(具体可以去搜索一下)。
对于sklearn库的安装,如果你已经安装了scipy、numpy库,直接在cmd下采用升级的方式安装,这是因为sklearn建立在NumPy,SciPy和matplotlib模块之上:
pip install -U scikit-learn
检查安装的库是否成功及其版本

# Check the versions of libraries
# Python version
import sys
print('Python: {}'.format(sys.version))
# scipy
import scipy
print('scipy: {}'.format(scipy.__version__))
# numpy
import numpy
print('numpy: {}'.format(numpy.__version__))
# matplotlib
import matplotlib
print('matplotlib: {}'.format(matplotlib.__version__))
# pandas
import pandas
print('pandas: {}'.format(pandas.__version__))
# scikit-learn
import sklearn
print('sklearn: {}'.format(sklearn.__version__))

(二)导入数据
导入库

# Load libraries
import pandas
from pandas.tools.plotting import scatter_matrix #导入散点图矩阵包
import matplotlib.pyplot as plt  
from sklearn import model_selection  #模型比较和选择包
from sklearn.metrics import classification_report  #将主要分类指标以文本输出
from sklearn.metrics import confusion_matrix #计算混淆矩阵,主要来评估分类的准确性
from sklearn.metrics import accuracy_score #计算精度得分
from sklearn.linear_model import LogisticRegression #线性模型中的逻辑回归
from sklearn.tree import DecisionTreeClassifier #树算法中的决策树分类包
from sklearn.neighbors import KNeighborsClassifier #导入最近邻算法中的KNN最近邻分类包
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis #判别分析算法中的线性判别分析包
from sklearn.naive_bayes import GaussianNB #朴素贝叶斯中的高斯朴素贝叶斯包
from sklearn.svm import SVC  #支持向量机算法中的支持向量分类包

上述导入各种程序包主要来自于sklearn的包,具体可以参见

http://scikit-learn.org/dev/index.html
对python机器学习中sklearn各种包的介绍。
接下来再导入数据.

# Load dataset
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
dataset = pandas.read_csv(url, names=names) #读取csv数据

注:这里是从某一网页导入数据,但是如果网页打不开很可能就导入不了,事实上,在python的sklearn数据库中自带鸢尾花数据集,在这里可以通过sklearn导入。
from sklearn import datasets
iris = datasets.load_iris()

(三)数据的描述性统计
这一步主要是对数据的结构、变量等进行初步了解,包括对数据的维度(样本量、变量个数等)进行了解、详细考察数据本身、所有属性的描述性统计、按照不同类别对数据进行细分。
首先是对数据的维度(样本量、变量个数等)进行了解。

# shape
print(dataset.shape)

输出结果为:(150, 5),即该数据有150个样本值以及5个变量(属性)。
其次是详细考察数据本身。

# head
print(dataset.head(20))

你将会看到前20行数据:

数据前20行.jpg

通过数据信息简单介绍一下注明的“鸢尾花数据集”:
鸢尾花(iris)是数据挖掘常用到的一个数据集,包含150种鸢尾花的信息,每50种取自三个鸢尾花种之一(setosa,versicolour或virginica)。每个花的特征用下面的5种属性描述萼片长度(Sepal.Length)、萼片宽度(Sepal.Width)、花瓣长度(Petal.Length)、花瓣宽度(Petal.Width)、类(Species)。
第三是,数据所有属性的描述性统计。

# descriptions
print(dataset.describe())

可以看到如下结果,分别表示4个属性的样本值、均值、标准误、最小值、25%分位数、中位数、75%分位数、最大值。

描述性统计.jpg

第四是,不同类别的数据细分。

# class distribution
print(dataset.groupby('class').size())

可以看到,Iris-setosa、Iris-versicolor、Iris-virginica三大类样本值均有50个。

(四)数据的可视化
数据可视化可以更好地了解数据。在这里通过两种图形类型:单变量图来更好了解每个属性;多变量图来更好了解每个属性间关系。
4.1 单变量图
首先是盒须图(箱形图)

# box and whisker plots
dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)
plt.show()
箱形图.jpg

在这里注意各个箱形图的纵坐标(y轴)的刻度是不同的,有明显的区分,因此可以看到,各变量表示的属性是有区分的。
然后是直方图

# histograms
dataset.hist()
plt.show()
直方图.jpg

在这里横坐标的坐标轴是有区分的。
4.2 多变量图(也就是图矩阵)
散点图矩阵,这有助于发现变量之间的结构化关系,在这里特别要注意观察两变量间(变量对)基于对角线的关系,这表明变量之间的相关性与可预测关系(散点图代表了两变量的相关程度,如果呈现出沿着对角线分布的趋势,说明它们的相关性较高)。

# scatter plot matrix
scatter_matrix(dataset)
plt.show()

![Upload 散点图矩阵.jpg failed. Please try again.]

未完待续。。。
本文完整代码见:https://github.com/zhangjuying20000/iris-machine-learning

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容