《Python机器学习时间指南》一、Python机器学习的生态系统

  本文主要记录《Python机器学习时间指南》第一章中1.2Python库和功能中的内容。学习机器学习的工作流程。

一、数据的获取和检查

requests获取数据

pandans处理数据

 1 import os
 2 import pandas as pd
 3 import requests
 4
 5 PATH = r‘E:/Python Machine Learning Blueprints/Chap1/1.2/‘
 6 r = requests.get(‘https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data‘)
 7 with open(PATH + ‘iris.data‘, ‘w‘) as f:
 8          f.write(r.text)
 9 os.chdir(PATH)
10 df = pd.read_csv(PATH + ‘iris.data‘, names=[‘sepal length‘,‘sepal width‘,‘petal length‘,‘petal width‘,‘class‘])
11 df.head()

注意:1、requests库为访问数据的API交互借口, pandas是数据分析工具,两者可以专门拿出来后续研究

2、read_csv后的路径名不能含有中文,否则会报OSError: Initializing from file failed。

上述程序运行结果:

sepal length sepal width petal length petal width class
0 5.1 3.5 1.4 0.2 Iris-setosa
1 4.9 3.0 1.4 0.2 Iris-setosa
2 4.7 3.2 1.3 0.2 Iris-setosa
3 4.6 3.1 1.5 0.2 Iris-setosa
4 5.0 3.6 1.4 0.2 Iris-setosa
5 5.4 3.9 1.7 0.4 Iris-setosa
6 4.6 3.4 1.4 0.3 Iris-setosa
7 5.0 3.4 1.5 0.2 Iris-setosa...

书中对于df的处理中值得注意的操作:

(1)过滤:

df[(df[‘class‘] == ‘Iris-setosa‘)&(df[‘petal width‘]>2.2)]

sepal length sepal width petal length petal width class
100 6.3 3.3 6.0 2.5 Iris-virginica
109 7.2 3.6 6.1 2.5 Iris-virginica
114 5.8 2.8 5.1 2.4 Iris-virginica
115 6.4 3.2 5.3 2.3 Iris-virginica
118 7.7 2.6 6.9 2.3 Iris-virginica
120 6.9 3.2 5.7 2.3 Iris-virginica
135 7.7 3.0 6.1 2.3 Iris-virginica
136 6.3 3.4 5.6 2.4 Iris-virginica
140 6.7 3.1 5.6 2.4 Iris-virginica
141 6.9 3.1 5.1 2.3 Iris-virginica
143 6.8 3.2 5.9 2.3 Iris-virginica
144 6.7 3.3 5.7 2.5 Iris-virginica
145 6.7 3.0 5.2 2.3 Iris-virginica
148 6.2 3.4 5.4 2.3 Iris-virginica

(2)过滤出的数据重新保存并重置索引

virginicadf = df[(df[‘class‘] == ‘Iris-virginica‘)&(df[‘petal width‘]>2.2)].reset_index(drop=True)

(3)获得各列统计信息

df.describe()

(4)每行-列相关系数

df.corr()

matplotlib绘制数据

(1)条形图(hist)

 1 import matplotlib.pyplot as plt
 2 plt.style.use(‘ggplot‘)
 3 #%matplotlib inline
 4 import numpy as np
 5
 6 fig,ax = plt.subplots(figsize=(6,4))
 7 ax.hist(df[‘petal width‘], color=‘black‘)
 8 ax.set_ylabel(‘Count‘,fontsize=12)
 9 ax.set_xlabel(‘Width‘,fontsize=12)
10 plt.title(‘Iris Petal Width‘,fontsize=14, y=1.01)
11 plt.show()

注意:%matplotlib inline为ipython中语句,先暂时封掉;figsize=(6,4)不要漏掉=。为了显示,在最后加了show()函数

(2)散点图(scatter)

1 fig,ax = plt.subplots(figsize=(6,6))
2 ax.scatter(df[‘petal width‘],df[‘petal length‘], color=‘green‘)
3 ax.set_ylabel(‘Petal width‘,fontsize=12)
4 ax.set_xlabel(‘petal length‘,fontsize=12)
5 plt.title(‘Petal Scatterplot‘)
6 plt.show()

(3)直接绘制折线图(plot)

1 fig,ax = plt.subplots(figsize=(6,6))
2 ax.scatter(df[‘petal width‘],df[‘petal length‘], color=‘green‘)
3 ax.set_ylabel(‘Petal width‘,fontsize=12)
4 ax.set_xlabel(‘petal length‘,fontsize=12)
5 plt.title(‘Petal Scatterplot‘)
6 plt.show()

(4)堆积条形图

 1 fig,ax = plt.subplots(figsize=(6,6))
 2 bar_width = .8
 3 labels = [x for x in df.columns if ‘length‘ in x or ‘width‘ in x]
 4 ver_y = [df[df[‘class‘]==‘Iris-versicolor‘][x].mean() for x in labels]
 5 vir_y = [df[df[‘class‘]==‘Iris-virginica‘][x].mean() for x in labels]
 6 set_y = [df[df[‘class‘]==‘Iris-setosa‘][x].mean() for x in labels]
 7 x = np.arange(len(labels))
 8 ax.bar(x,vir_y,bar_width,bottom=set_y,color=‘darkgrey‘)
 9 ax.bar(x,set_y,bar_width,bottom=ver_y,color=‘white‘)
10 ax.bar(x,ver_y,bar_width,color=‘black‘)
11 ax.set_xticks(x+(bar_width/2))
12 ax.set_xticklabels(labels,rotation=-70,fontsize=12)
13 ax.set_title(‘Mean Feature Measurement By Class‘,y=1.01)
14 ax.legend([‘Virginica‘,‘Setosa‘,‘Versicolor‘])

注意:8-10行的代码是按照三种类型从高到低排的,如果调换了顺序结果错误。

Seaborn库统计可视化

利用Seaborn库可以简单获取数据的相关性和特征。

二、准备

1、Map

df[‘class‘] = df[‘class‘].map({‘Iris-setosa‘:‘SET‘,‘Iris-virginica‘:‘VIR‘,‘Iris-versicolor‘:‘VER‘})

sepal length sepal width petal length petal width class
0 5.1 3.5 1.4 0.2 SET
1 4.9 3.0 1.4 0.2 SET
2 4.7 3.2 1.3 0.2 SET
3 4.6 3.1 1.5 0.2 SET
4 5.0 3.6 1.4 0.2 SET
5 5.4 3.9 1.7 0.4 SET
6 4.6 3.4 1.4 0.3 SET

 2、Apply对行或列操作

应用在某一列:df[‘width petal‘] = df[‘petal width‘].apply(lambda v: 1 if v >=1.3 else 0)

在df中添加一列width petal  如果petal width超过1.3则为1,否则为0。注意lambda v是df[‘petal width‘]的返回值

应用在数据框:df[‘width area‘]=df.apply[lambda r: r[‘petal length‘] * r[‘petal width‘], axis=1]

注:axis=1表示对行运用函数,axis=0表示对列应用函数。所以上面的lambda r返回的是每一行

3、ApplyMap对所有单元执行操作

df.applymap(lambda v: np.log(v) if isinstance(v,float) else v)

4、Groupby 基于某些选择的列别对数据进行分组

df.groupby(‘class‘).mean()

数据按class分类并分别给出平均值

sepal length sepal width petal length petal width
class
Iris-setosa 5.006 3.418 1.464 0.244
Iris-versicolor 5.936 2.770 4.260 1.326
Iris-virginica 6.588 2.974 5.552 2.026

df.groupby(‘class‘).describe()

数据按class分裂并分别给出描述统计信息

petal length \
count mean std min 25% 50% 75% max
class
Iris-setosa 50.0 1.464 0.173511 1.0 1.4 1.50 1.575 1.9
Iris-versicolor 50.0 4.260 0.469911 3.0 4.0 4.35 4.600 5.1
Iris-virginica 50.0 5.552 0.551895 4.5 5.1 5.55 5.875 6.9

petal width ... sepal length sepal width \
count mean ... 75% max count mean
class ...
Iris-setosa 50.0 0.244 ... 5.2 5.8 50.0 3.418
Iris-versicolor 50.0 1.326 ... 6.3 7.0 50.0 2.770
Iris-virginica 50.0 2.026 ... 6.9 7.9 50.0 2.974

std min 25% 50% 75% max
class
Iris-setosa 0.381024 2.3 3.125 3.4 3.675 4.4
Iris-versicolor 0.313798 2.0 2.525 2.8 3.000 3.4
Iris-virginica 0.322497 2.2 2.800 3.0 3.175 3.8

df.groupby(‘class‘)[‘petal width‘].agg({‘delta‘:lambda x:x.max()-x.min(), ‘max‘:np.max, ‘min‘:np.min})

delta max min
class
Iris-setosa 0.5 0.6 0.1
Iris-versicolor 0.8 1.8 1.0
Iris-virginica 1.1 2.5 1.4

三、建模和评估

这里只是简单运用两个函数,详细的内容见后面的内容

注:本章涉及到的可以详细了解的库:

requests、pandans、matplotlib、seaborn、statsmodels、scikit-learn

时间: 2024-10-24 12:49:58

《Python机器学习时间指南》一、Python机器学习的生态系统的相关文章

【Python机器学习时间指南】一、Python机器学习的生态系统

本文主要记录<Python机器学习时间指南>第一章中1.2Python库和功能中的内容.学习机器学习的工作流程. 一.数据的获取和检查 requests获取数据 pandans处理数据 1 import os 2 import pandas as pd 3 import requests 4 5 PATH = r'E:/Python Machine Learning Blueprints/Chap1/1.2/' 6 r = requests.get('https://archive.ics.u

python模块--时间模块

一.python中时间介绍: python中时间的表示形式有两种: 1.时间戳表示法,即以整型或浮点型表示的是一个以秒为单位的时间间隔.这个时间的基础值是从1970年的1月1号零点开始算起. 2.元组格式表示法,即一种Python的数据结构表示.这个元组有9个整型内容.分别表示不同的时间含义. 二.datetime模块 2.1 datetime模块的所有函数 In [2]: dir(datetime) Out[2]:  ['MAXYEAR',  'MINYEAR',  '__doc__',  '

机器学习实践:《Python机器学习实践指南》中文PDF+英文PDF+代码

机器学习是近年来渐趋热门的一个领域,同时Python 语言经过一段时间的发展也已逐渐成为主流的编程语言之一.<Python机器学习实践指南>结合了机器学习和Python 语言两个热门的领域,通过利用两种核心的机器学习算法来将Python 语言在数据分析方面的优势发挥到极致. 共有10 章.第1 章讲解了Python 机器学习的生态系统,剩余9 章介绍了众多与机器学习相关的算法,包括各类分类算法.数据可视化技术.推荐引擎等,主要包括机器学习在公寓.机票.IPO 市场.新闻源.内容推广.股票市场.

分享《Python机器学习实践指南》(高清中文版PDF+高清英文版PDF+源代码)

下载:https://pan.baidu.com/s/11dGldpITOoUUJmS9eD5ENw Python机器学习实践指南(高清中文版PDF+高清英文版PDF+源代码) 中文和英文两版对比学习, 带目录书签,可复制粘贴:讲解详细并配有源代码. 其中,高清中文版如图: 原文地址:http://blog.51cto.com/3215120/2301528

分享《Python机器学习实践指南》+PDF+源码+Alexanfer T.Combs+黄申

下载:https://pan.baidu.com/s/1nb-Q7MtQ2dfBbx2Dir-rQA 更多资料分享:http://blog.51cto.com/14087171 Python机器学习实践指南(高清中文版PDF+高清英文版PDF+源代码) 高清中文版PDF,268页,带目录书签,彩色配图,文字可复制粘贴: 高清英文版PDF,324页,带目录书签,彩色配图,文字可复制粘贴: 中文和英文两版对比学习: 讲解详细并配有源代码. 其中,高清中文版如图: 原文地址:http://blog.5

【机器学习实验】用Python进行机器学习实验

概要 本文是用Python编程语言来进行机器学习小实验的第一篇.主要内容如下: 读入数据并清洗数据 探索理解输入数据的特点 分析如何为学习算法呈现数据 选择正确的模型和学习算法 评估程序表现的准确性 读入数据 Reading the data 当读入数据时,你将面临处理无效或丢失数据的问题,好的处理方式相比于精确的科学来说,更像是一种艺术.因为这部分处理适当可以适用于更多的机器学习算法并因此提高成功的概率. 用NumPy有效地咀嚼数据,用SciPy智能地吸收数据 Python是一个高度优化的解释

python入门、python数据分析(numpy、matplotlib、sklearn等)tensflow、爬虫、机器学习、深度学习、自然语言处理、数据挖掘、机器学习项目实战、python全栈、PHP、java、java web、openCV、hadoop、matlab、android、数据结构算法和刷题等教学视频

扫描二维码加好友购买视频,绝对优惠,谢谢支持. python入门和进阶熟练教学视频 入门: 进阶: python数据分析教学视频 python数据分析晋级班 tensorflow教程及实战 python爬虫教学 机器学习课程 深度学习课程 机器学习项目班 自然语言处理教学视频 python全栈教学视频 数据挖掘视频 PHP教学视频 java java web openCV教学视频 Hadoop教学视频 matlab教学 andriod教学视频 数据结构算法班及面试班 原文地址:https://w

机器学习自学指南【转】

事实上有许多的途径可以了解机器学习,也有许多的资源例如书籍.公开课等可为所用,一些相关的比赛和工具也是你了解这个领域的好帮手.本文我将围绕这个话题,给出一些总结性的认识,并为你由程序员到机器学习高手的蜕变旅程中提供一些学习指引. 机器学习的四个层次 根据能力可以将学习过程分成四个阶段.这也是一个有助于我们将所有学习资源进行分类的好方法. 初学阶段 新手阶段 中级阶段 高级阶段 我之所以把初学阶段和新手阶段区分开来,是因为我想让那些完全初学者(对这个领域感兴趣的程序员)在初学阶段对机器学习有一个大

一步一步入门机器学习之五:机器学习自学指南

事实上有许多的途径可以了解机器学习,也有许多的资源例如书籍.公开课等可为所用,一些相关的比赛和工具也是你了解这个领域的好帮手.本文我将围绕这个话题,给出一些总结性的认识,并为你由程序员到机器学习高手的蜕变旅程中提供一些学习指引. 机器学习的四个层次 根据能力可以将学习过程分成四个阶段.这也是一个有助于我们将所有学习资源进行分类的好方法. 初学阶段 新手阶段 中级阶段 高级阶段 我之所以把初学阶段和新手阶段区分开来,是因为我想让那些完全初学者(对这个领域感兴趣的程序员)在初学阶段对机器学习有一个大