目录

0、先对需要安装的库进行版本检测

1、导入数据

1.1 导入需要的库:

1.2 导入数据集

2、概括数据

2.1 查看数据

2.2 查看数据的维度

2.3 统计描述数据

2.4 数据分类分布

3 数据可视化

3.1 单变量图表

3.2 多变量图表

4 评估算法

4.1 分离训练集

4.2 评估模型

4.3 创建模型

5实施预测


0、先对需要安装的库进行版本检测

输入如下命令:

import sys
import scipy
import numpy
import matplotlib
import pandas
import sklearn
import IPython
print('python version:{}'.format(sys.version))
print('scipy version:{}'.format(scipy.__version__))
print('numpy version:{}'.format(numpy.__version__))
print('matplotlib version:{}'.format(matplotlib.__version__))
print('pandas version:{}'.format(pandas.__version__))
print('sklearn version:{}'.format(sklearn.__version__))
print('IPython version:{}'.format(IPython.__version__))

测试后输出为:

python version:3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)]
scipy version:1.6.2
numpy version:1.20.1
matplotlib version:3.3.4
pandas version:1.2.4
sklearn version:0.24.1
IPython version:7.22.0

只要不报错,正常输出,就代表安装成功。

机器学习数据处理的步骤:

(1)导入数据

(2)概括数据

(3)数据可视化

(4)评估算法

(5)实施预测

1、导入数据

鸢尾花数据集属于有监督数据集,数据包括:花瓣的长度、宽度以及花萼的长度、宽度。所有花隶属于setosa、versicolor和virginica三个品种之一。这是一个典型的三分类问题。

鸢尾花(iris)数据集是机器学习和统计学中一个经典的数据集。它包含在scikit-learn的datasets模块中。

导入数据的命令:

# 导入iris数据集
from sklearn.datasets import load_iris
iris_dataset=load_iris()

也可以下载数据集然后导入的方式进行。

可以在UCI机器学习仓库下载鸢尾花数据集:

https://archive.ics.uci.edu/ml/datasets/Iris

我们通过第二种办法导入数据。下载的数据为iris.data,将data后缀改为CSV格式。名称为iris.data.csv.

1.1 导入需要的库:

#导入需要的类库
#用pandas读取外部文件
from pandas import read_csv
#绘制散点图
from pandas.plotting import scatter_matrix
#绘图
from matplotlib import pyplot
#sklearn分类需要的类
from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold
#交叉验证
from sklearn.model_selection import cross_val_score
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.discriminant_analysis import LinearDiscriminantAnalysis
#K近邻算法
from sklearn.neighbors import KNeighborsClassifier
#贝叶斯
from sklearn.naive_bayes import GaussianNB
#支持向量机SVM
from sklearn.svm import SVC

1.2 导入数据集

代码如下:

#导入数据,括号内为数据位置
filename='iris.data.csv'
#names是给数据命名
names=['separ-length','separ-width','petal-length','petal-width','class']
#读入csv文件,使用pandas读入数据
dataset=read_csv(filename,names=names)

2、概括数据

数据导入后,我们急需要知道数据的信息。

可以从以下几个角度审查数据:

(1)查看数据;

(2)数据的维度;

(3)统计描述所有的数据特征;

(4)数据分类的分布情况。

2.1 查看数据

代码如下:

#查看数据前五行
dataset.head()

输出为:

2.2 查看数据的维度

代码:

#查看数据维度
print('数据维度:行 %s,列 %s' % dataset.shape)

执行结果:

数据维度:行 150,列 5

2.3 统计描述数据

数据特征的统计描述信息包括数据的行数、中位数、最大值、最小值、均值、四分位值等统计数据信息。

代码

#统计描述数据信息
print(dataset.describe())

执行结果:

2.4 数据分类分布

查看class数据的分布情况,得到的是数据的绝对数值,从数据可以看出数据分布是否均衡。

代码:

#分类分布情况
print(dataset.groupby('class').size())

执行结果:

鸢尾花数据集分布是很平衡的,不需要特殊处理。如果数据分布不平衡时,需要进行处理,常用的调整数据平衡的方法:

  • 扩大数据样本;
  • 数据的重新抽样;当数据超过一万条时,可以考虑测试欠抽样(删除多数类样本),当数据量比较少时可以考虑过抽样(复制少数类样本);
  • 尝试生成人工样本;
  • 异常检测和变化检测。

3 数据可视化

经过第2步数据审查后,对数据有了一个基本的了解,接下来用更直观的图标来进一步查看数据特征的分布情况。

  • 使用单变量图表可以更好地理解买一个特征属性;
  • 多变量图表用于理解不同特征属性之间的关系。

3.1 单变量图表

单变量图表可以显示每一个单独的特征属性,由于特征值都是数字,可以使用箱线图来表示属性与中位值的离散速度。

代码:

#箱线图
dataset.plot(kind='box',subplots=True,layout=(2,2),sharex=False,sharey=False)
pyplot.show()

执行结果:

也可以绘制直方图。

代码:

#直方图
dataset.hist()
pyplot.show()

执行结果:

从直方图可以看出,separ-length和separ-width基本符合高斯分布。

3.2 多变量图表

可以通过散点矩阵图来查看每个属性之间的关系。

代码:

#散点矩阵图
scatter_matrix(dataset)
pyplot.show()

执行结果:

从多变量图大概能看出特征量之间的关系。

4 评估算法

将数据集代入各种算法训练,找出最合适的算法。

步骤如下:

(1)分离训练集;

(2)采用10折交叉验证来评估算法模型;

(3)生成6个不同的模型来预测新数据;

(4)选择最优模型。

4.1 分离训练集

一般分出数据集的80%作为训练集,剩下的20%用来作为测试集。

代码如下:

#分出训练集
array=dataset.values
X=array[:,0:4]
Y=array[:,4]
validation_size=0.2
seed=7
X_train,X_validation,Y_train,Y_validation=train_test_split(X,Y,test_size=validation_size,random_state=seed)
X_train.shape

执行结果:

鸢尾花总数150个,训练集120个,测试集30个。分离成功。

4.2 评估模型

用10折交叉验证来分离训练数据集,评估算法的准确度。10折交叉验证是随机地将数据分成10份:9份用来训练模型,1份用来评估算法。

4.3 创建模型

根据散点图可以看出,有些数据符合线性分许,所以可以用线性模型来评估。

用六种算法来评估:

  • 线性回归(LR);
  • 线性判别分析(LDA);
  • K近邻(KNN);
  • 分类与回归树(CART);
  • 贝叶斯分类器(NB);
  • 支持向量机(SVM)。

其中,LR和LDA为线性算法,剩下的都为非线性算法。

#算法审查
models={}
models['LR']=LogisticRegression()
models['LDA']=LinearDiscriminantAnalysis()
models['KNN']=KNeighborsClassifier()
models['CART']=DecisionTreeClassifier()
models['NB']=GaussianNB()
models['SVM']=SVC()
#评估算法
results=[]
for key in models:kfold=KFold(n_splits=10,random_state=seed,shuffle=True)cv_results=cross_val_score(models[key],X_train,Y_train,cv=kfold,scoring='accuracy')results.append(cv_results)

执行结果:

#箱线图比较算法
fig=pyplot.figure()
fig.suptitle('Algorithm Comparison')
ax=fig.add_subplot(111)
pyplot.boxplot(results)
ax.set_xticklabels(models.keys())
pyplot.show()

执行结果为:

5实施预测

LR、KNN、SVM得分比较高,用这三个分别进行测试。

#使用评估数据集评估算法
svm=SVC()
svm.fit(X=X_train,y=Y_train)
predictions=svm.predict(X_validation)
print(accuracy_score(Y_validation,predictions))
print(confusion_matrix(Y_validation,predictions))
print(classification_report(Y_validation,predictions))

SVM的执行结果:

LR的执行结果:

KNN的执行结果:

从结果可以看出,KNN在测试集中的得分更好一些。

机器学习项目1:鸢尾花分类相关推荐

  1. 机器学习项目实践——鸢尾花分类

    基于SVM算法实现鸢尾花分类 摘要:支持向量机,因其英文名为support vector machine,故一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分 ...

  2. 机器学习实践:鸢尾花分类-4

    机器学习实践:鸢尾花分类 1.实验描述 决策树是机器学习中一种简单而又经典的算法.本实验将带领大家学习决策树的基本原理,并学习使用 scikit-learn 来构建一个决策树分类模型,最后使用此模型预 ...

  3. Python机器学习基础教程——鸢尾花分类

    Python机器学习基础教程--鸢尾花分类 初识数据 训练数据与测试数据 观察数据-数据可视化 模型的建立与评估--K近邻算法 她还有一些鸢尾花的测量数据,这些花之前已经被植物学专家鉴定为属于 set ...

  4. Python机器学习之LogisticRegression——鸢尾花分类

    Python机器学习之LogisticRegression: 鸢尾花分类问题: 鸢尾花分类及特征属性: 鸢尾花是一种多年生草本植物.sklearn.datasets.load_iris()数据集将其归 ...

  5. 端到端机器学习_端到端机器学习项目:评论分类

    端到端机器学习 In this article, we will go through a classification problem that involves classifying a rev ...

  6. 端到端机器学习项目:评论分类

    作者|Kiprono Elijah Koech 编译|VK 来源|Towards Data Science 在本文中,我们将讨论一个分类问题,该问题涉及到将评论分为正面或负面.这里使用的评论是客户在A ...

  7. python分类器鸢尾花怎么写_python机器学习基础教程-鸢尾花分类

    一: 环境准备: 1.导入的库: importnumpy as npimportmatplotlib.pyplot as pltimportpandas as pdimport mglearn 2.导 ...

  8. 机器学习项目实战----新闻分类任务(二)

    五.TF-IDF以及LDA主题模型 TF-IDF关键词提取 import jieba.analyse index = 2400 print(df_news['content'][index]) con ...

  9. Python机器学习基础教程 鸢尾花分类

    一.数据集分析 鸢尾花数据集保存在sklearn.datasets模块中,我们可以用load_iris函数加载数据,这个函数返回的iris对象是一个Bunch对象,与字典相似,包括键和值 此处打印出i ...

  10. 机器学习项目实战----新闻分类任务(一)

    一.基础知识 假设有一份文本数据如下,数据量很大,现在要对整个语料库进行文本分析,category代表新闻种类,theme代表新闻主题,URL代表新闻链接地址,content代表新闻主题内容 停用词: ...

最新文章

  1. CrowdStrike加入VirusTotal阵营
  2. 欢迎使用markdown编辑器20181206
  3. android overridePendingTransition
  4. 【STM32】FreeRTOS 其他任务 API 函数
  5. 《Credit Risk Scorecard》第八章: Scorecard Implementation
  6. php连接mysql数据,php连接mysql数据库
  7. 以太坊智能合约 solidity 的常用的数据结构介绍
  8. 苹果Mac开启root用户及切换到root用户的方法
  9. vue 跨域请求js添加代码
  10. Lua解析器管理器(封装解析器通用函数(销毁解析器,垃圾清理),通过ab包加载lua文件的加载器)
  11. app抓包工具_安卓APP逆向入门分析——破解某APP登陆请求参数
  12. mysql查询之左连接查询与右连接查询
  13. UE4设置场景摄像机视角
  14. BNUZ-ACM 2018国庆新生欢乐赛部分题解+思路(已解出答案部分)
  15. python的pandas重复值处理(duplicated()和drop_duplicates())
  16. Cocos2d-HTML5--人物动画
  17. 自然语言处理(NLP)之命名实体识别
  18. C++中inet_pton、inet_ntop函数
  19. Linux编译时如何减小so库文件的大小
  20. 奇迹mu GM命令管理器修改

热门文章

  1. VS2017中自用部分插件的设置的翻译或功能介绍—— Viasfora功能介绍(二)
  2. 短视频矩阵系统,抖音矩阵系统源码,抖音SEO源码,tell
  3. CSDN MarkDown编辑器支持展示文章封面啦【8月1日】
  4. 2008年最龌龊语录100句
  5. 在react中使用fetch
  6. 人民币与美元的汇率转换 ------Java实现
  7. 前端checkList
  8. 学计算机买哪种手机好,学生用机哪款好?这几款高性价比手机值得入手
  9. elasticsearch的java代码操作详解
  10. 45分钟玩转PR(Adobe Premiere)-在线课程特效剪辑(干货分享)