机器学习实验——分类学习算法

一、目的和要求

1、理解监督学习和分类学习的基本概念。

2、掌握分类学习五种算法的算法流程。

3、学会编写分类学习五种算法的Python编程方法。

4、会使用分类学习评价方法测评不同的算法性能

二、设备或环境

个人电脑、Anaconda2、Python2.7.10和网络

实验步骤  

1、设计算法步骤和流程

2、根据算法编写Python程序

3、运行机器学习算法程序并调试

内容

(一):线性分类器----良/恶性乳腺癌肿瘤预测。

1、写出本例中所用数据的数据描述

每条样本有11列不同的数值:1列用于检索的id,9列与肿瘤相关的医学特征,以及一列表征肿瘤类型的数值。所有9列用于表示肿瘤医学特质的数值均被量化为1~10之间的数字,而肿瘤的类型也借由数字2和数字4分别指代良性和恶性。包括其中包含16个缺失值,用“?”标出。

  • Sample code number 样本代码编号
  • Clump Thickness 肿块厚度
  • Uniformity of Cell Size 细胞大小的均匀性
  • Uniformity of Cell Shape 细胞形状的均匀性
  • Marginal Adhesion 边缘粘
  • Single Epithelial Cell Size 单上皮细胞的大小
  • Bare Nuclei 裸核
  • Bland Chromatin 乏味染色体
  • Normal Nucleoli 正常核
  • Mitoses 有丝分裂
  • class 类别 2为良性,4为恶性

2、运行Chapter_2.1.1.1 粘贴实验结果、并分别对每一个结果做出解释

 683条数据 9个特征 1个id 1个分类结果

3、在代码中添加data.head(),粘贴结果,并解释代码含义

 使用head()函数,查看前5行数据。

4、在代码中添加data[column_names[1:10]],粘贴结果,并解释代码含义

 column_name(s) 表中所有列的名称,只看第2到10列,省略了对第一列ID的查看

5、 在代码中添加data.info(),粘贴结果,并解释代码含义

 显示所有信息

6 、在代码中添加data1 = data[[ 'Clump Thickness', 'Uniformity of Cell Size', 'Class']],粘贴结果,解释代码含义,并添加相关语句显示data1的数据格式和统计特征

使用data1.head(10)显示data1的数据格式

使用data1.info()显示data1的统计特征

 输出data1的数据量和维度,仅显示Clump Thickness,Uniformity of Cell Size,Class的信息。

7 、解释train_test_split函数的作用和各参数含义

调用train_test_split将原始数据按比例分割为“测试集”和“训练集”

data:所要划分的样本

test_size:样本占比,如果是整数的话就是样本的数量,决定划分测试、训练集比例

random_state:是随机数的种子

8、数据预处理中涉及到的fit_transform()函数和transform()函数之间的区别是什么?

fit_transform()的作用就是先拟合数据,然后转化它将其转化为标准形式

tranform()的作用是通过找中心和缩放等实现标准化

9 、对比分析以下LogisticRegression分类器和SGDClassifier分类器的性能

SGDClassifier是一系列采用了梯度下降来求解参数的算法的集合,当数据集特别大的时候,使用SGDClassifier中的逻辑回归。

(二):支持向量机----手写体数字识别

1、写出本例中所用数据的数据描述

在https://archive.ics.uci.edu/ml/datasets.php下载数据说明

Optical Recognition of Handwritten Digits

https://archive.ics.uci.edu/ml/datasets/Optical+Recognition+of+Handwritten+Digits

该手写体数字的数码图像数据共1797条,每幅图是64的像素矩阵表示的

2、运行Chapter_2.1.1.2 粘贴实验结果、并分别对每一个结果做出解释

3 、简要说明如何使用召回率、准确率和f1指标对非二分类问题进行评价

准确率:正确分类的比率

            =正确分类的总数/样本总数

            =(TN+TP)/(TN+FN+FP+TP)

召回率:所有真实值为1的数据中,预测对了的个数

            =TP/(TP+FN)

F1指标:精确值和召回率的调和均值

             =2P*R/(P+R)   (精准率P,召回率R)

4、在代码中添加print (digits.DESCR),粘贴结果,并解释代码含义

 输出数据集的简介、作者以及参考资料

(三):K近邻分类----鸢尾花数据分类

1、写出本例中所用数据的数据描述

在https://archive.ics.uci.edu/ml/datasets.php下载数据说明

Iris

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

Iris数据集共有150朵鸢尾数据样本,且均匀分布在3个不同的亚种;每个数据样本被4个不同的花瓣、花萼的形状特征所描述。

2、运行Chapter_2.1.1.4 粘贴实验结果、并分别对每一个结果做出解释

3 、说明Knc = KNeighborsClassifier(n_neighbors=(所谓的K个数), weights=’uniform’) 函数的作用和各参数的含义

作用:用于实现k近邻算法的分类器

n_neighbors:默认情况下kneighbors查询使用的邻居数。就是k的值,选取最近的k个点。

Weights:默认是uniform,参数可以是uniform、distance,也可以是用户自己定义的函数。uniform是均等的权重,就说所有的邻近点的权重都是相等的。distance是不均等的权重,距离近的点比距离远的点的影响大。用户自定义的函数,接收距离的数组,返回一组维数相同的权重。

4、在程序中修改KNeighborsClassifier函数的两个参数,观察和记录模型的准确率、精确率、召回率和f1指标的变化,找到最优的参数并记录。

原数据

更改n_neighbors

 更改weights

最优参数

 

(四):决策树----泰坦尼克号乘客生还情况

1、写出本例中所用数据的数据描述

2、运行Chapter_2.1.1.5 粘贴实验结果、并分别对每一个结果做出解释

 该数据共1313条乘客信息,并且有些特征数据是完整的,有些是缺失的;有些是数值型的,有些为字符串。

3 、在程序中添加代码,查看数据分割后训练集(X_train)和测试集(X_test)数据

(1)X_train

(2)X_test

 

4 、在程序中添加代码,查看特征转换后的训练集和测试集数据,并分析和转换前数据的不同

(1)X_train

(2)X_test

(五):集成模型----泰坦尼克号乘客生还情况

1、写出本例中所用数据的数据描述

2、运行Chapter_2.1.1.6 粘贴实验结果、并分别对每一个结果做出解释

3 、通过分析性能指标,说明随机森林分类器相对单一决策树的性能差异。

在相同的训练和测试数据条件下,仅仅使用模型的默认配置,梯度上升决策树具有最佳的预测性能,其次是随机森林分类器,最后是单一决策树。

(六):思考题----简述Scikit-learn库的作用和使用方法

作用:使用统一的界面实现一系列机器学习,预处理,交叉验证和可视化算法。

使用方法:获取数据 -> 数据预处理 -> 训练建模 -> 模型评估 -> 预测,分类

猜你喜欢

转载自blog.csdn.net/shanhe_yuchuan/article/details/123630320