一个小项目了解机器学习基本流程(附源码)

研一机器学习小白开始写博客记录学习了!请各位CSDN大佬多多指教[抱拳]

读书笔记1
《Python Machine Learning Blueprints》 Alexander T.Combs 著
《Python机器学习实践指南》黄申 译

本文首先介绍机器学习基本流程,然后使用Jupyter Notebook作为编译器,通过实际项目了解机器学习流程及常用Python机器学习库,比如numpy(用于科学计算)、pandas(基于numpy,用于大型数据分析)、matplotlib(用于数据可视化)、seaborn(用于图形风格整洁化)、statsmodels(用于探索数据、评估模型)、scikit-learn(覆盖分类、回归、聚类、降维、模型选择和预处理等领域)。
可提前下载好需要用到的库, Win+R在命令行分别运行
pip install requests
pip install numpy
pip install pandas
pip install matplotlib
pip install seaborn
pip install statsmodels
conda install scikit-learn
安装包可参考–Python及其常用模块库下载及安装

机器学习/数据科学的工作流程一般有六个步骤:获取,检查和探索,清理和准备,建模,评估和最后的部署。

获取

机器学习应用中的数据,可以来自不同的的数据源,可能是通过电子邮件发送的CSV文件,也可能是从服务器中拉取出来的日志,或者它可能需要构建自己的Web爬虫。数据也可能存在不同的格式,大部分情况下数据是基于文本格式的,但基于图像、甚至视频文件的机器学习应用也在不断发展。
简单例子:

import requests       
r = requests.get(r"https://api.github.com/users/acombs/starred")
r.json()

在这里插入图片描述

检查和探索

获得数据之后,下一步就是合理地检查数据。比如说:如果数据具有唯一的标识,那就检查数据是否真的只有一个;如果数据是基于价格的,检查是否总为正数;检查数据是否缺失或者不完整。无论数据是何种类型,检查最极端的情况通常是检查异常的最好办法。一个良好的实践是在数据上运行一些简单的统计测试,并将数据可视化。

清理和准备

当所有数据准备就绪,下一步就是将它转化为适合于模型使用的格式。这个阶段包括若干过程,如过滤、聚集、输入和转化。所需操作类型将很大程度上取决于数据的类型,以及所使用的库和算法的类型。

建模

数据准备完成以后,下一阶段就是建模了。在这个阶段我们将选择适当的算法,并在数据上训练乘䘝模型。基本步骤包括将数据分割为训练、测试和验证的集合。

评估

模型构建完成并开始进行预测,下一步就是了解模型做的有多好。有很多方式来衡量模型的表现,它在很大程度上依赖于所用数据和模型的类型,不过就整体而言评估阶段试图回答:模型的预测和实际值到底有多接近。

部署

一旦模型表现令人满意。那么下一个步骤就是部署了。根据具体的使用情况,这个阶段有不同的形式,但常见的场景包括:将其作为一个大型应用程序中的某个功能特性,一个定制的Web应用程序,甚至一个简单的cron作业。

下面开始项目实践以了解机器学习具体步骤。

数据准备及检查

  • 从网站 http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data 下载一个经典的机器学习数据集:iris.data,并将其写入iris目录
import os
import pandas as pd
import requests

PATH = r' C:\Users\Lenovo\Desktop\data\iris'         # 先在桌面新建一个名为data的文件夹,copy路径粘贴至此
r = requests.get('http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data')

with open(PATH + 'iris.data', 'w') as f:
    f.write(r.text)
   
os.chdir(PATH)
df = pd.read_csv(PATH + 'iris.data', names=['sepal length', 'sepal width', 'petal length', 'petal width', 'class'])
df.head()

在这里插入图片描述
先学基本操作
在pandas中,操作的基本单位是表格形式的数据列和行,数据列称为Series,表格称为DateFrame. 以下通过列名,从数据框中选择一列

df = pd.read_csv(PATH + 'iris.data', names=['sepal length', 'sepal width', 'petal length', 'petal width', 'class'])
df['sepal length']

在这里插入图片描述
使用.iloc[row,column]标注,执行数据切片,选择前两列和前四行

df.iloc[:3,:2]

在这里插入图片描述
使用.loc标注和Python列表切片的语法,可以选择数据框中的一小片; 使用列表迭代器并只选择描述width的列.

df.loc[:3, [x for x in df.columns if 'width' in x]]

在这里插入图片描述
另一种选择数据的方法:根据某些特定的条件选择数据的一个子集。下面代码先列出所有可用唯一类,然后选择其中之一。

df['class'].unique()

在这里插入图片描述
选择数据框中只包含Iris-virginica类的数据

df[df['class']=="Iris-virginica"]

在这里插入图片描述
计算数据框大小(总数)

df.count()

在这里插入图片描述
计算Iris-virginica类总数

df[df['class']=='Iris-virginica'].count()

在这里插入图片描述
将Iris-virginica数据保存为一个新的数据并重置索引

virginica = df[df['class']=='Iris-virginica'].reset_index(drop=True)
virginica

在这里插入图片描述
我们通过在某个列上放置条件来选择数据,现在来添加更多的条件。下面我们将回到最初始的数据框,并使用两个条件来选择数据。

df[(df['class']=='Iris-virginica')&(df['petal width']>2.2)]

在这里插入图片描述
下面使用pandas,从虹膜数据集中获取一些快速的描述性统计数据(类别信息被自动屏蔽了,因为它在这里是不相关的)

df.describe()   
# 如果想要更详细的信息,还可以使用下列代码传入百分比:
# df.describe(percentiles=[.20, .40, .80, .90, .95])

在这里插入图片描述
下面检查特征之间是否有相关性,通过在数据鲁昂上调用.corr()来完成

df.corr()

在这里插入图片描述

数据可视化

创建一个宽6英尺、高4英尺的插图,通过调用.hist()并传入数据,依照iris数据框绘制了花瓣宽度的直方图,将颜色设为black;设置y、x轴标签;最后一行设置直方图标题;

import matplotlib.pyplot as plt
import numpy as np
plt.style.use('
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值