python机器学习入门------------------鸢尾花分类

本文介绍了如何更新Python的pip和setuptools,以及如何在Anaconda3环境下安装数据科学所需的包。接着,通过下载mglearn并介绍鸢尾花数据集的学习流程,包括数据预处理、分割,以及使用KNN算法建立模型。最后,文章展示了模型评估和预测的过程。
摘要由CSDN通过智能技术生成

一 环境配置

更新pip

python -m pip uninstall pip setuptools
python -m pip install --upgrade pip --user -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
python -m pip install pip setuptools -user -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

下载需要的包

pip install nump scipy matplotlib ipython scikit-learn pandas -user -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

安装mglearn

下载mglearn项目,并将mglearn文件夹复制到对应的Anaconda3安装目录的子目录下

下载地址

 https://github.com/amueller/introduction_to_ml_with_python 
Anaconda3\Lib\site-packages

鸢尾花学习流程

(1)准备原始数据

原始数据是一个集合
原始数据的内容一般为:

名称数据类型
data:原始数据集类似二维数组,实则为一个对象
target:原始目标集类似一维数组,实则为一个对象
frame:框体(后期用于显示)None
feature_names 原始数据各个特征名集合

其中data和target分别有一个成员shape,其类型是元组,表示data和target的数据个数,和数据类型的个数

(2)将原始数据分割

分割为:

数据名称作用
X_train 训练数据集:用于后续训练出模型的数据集
X_test 测试数据集用于训练后模型的输入变量
y_train目标训练集用于训练出模型的目标数据集
y_test 目标测试集:用于和训练后的X_test作为输入变量输入模型后的结果比对的数据集

数据分割函数及其参数说明

# iris_dataset['data']需要分割的数据集
# iris_dataset['target']所要划分的样本结果,也就是说我们希望把数据集分割成怎么样
# random_state 随机数种子,其作用是打乱数据集,如果这个值是非None的整数,那么代表我们如果每次输入相同,那么输出也应该相同,也就是说t*f(x)=y,那么t就相当于t
# test_size:测试集占总样本的比例
X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=42,
                                                    test_size=0.25, stratify=iris_dataset['target'])

(3)通过可视化图像观察模型是否可靠

绘制散点矩阵,以便于让2个以上的数据的特征可视化,散点矩阵对角线上的图是每个特征的直方图(也就是单一特征的柱状图)

需要用到的函数及其参数说明

# colunms=iris_dataset.feature_names,按照iris_dataset_feature_names中的字符串对数据列进行标记
iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names)


# 相当于将参数传递给matplotlib.pyplot
# frame,pandas dataframe对象
# alpha,透明度,一般取(0,1]
# diagonal 必选,选{'hist','kde'}中的一个,’hist‘表示直方图,‘kde’表示核密度估计
# figsize,以英寸为单位的图像大小,一般以元组 (width, height) 形式设置
# marker,Matplotlib可用的标记类型,如’.’,’,’,’o’等,也就是点的形状
# ax,可选一般为none
# density_kwds,(other plotting keyword arguments,可选),与kde相关的字典参数
# range_padding,(float, 可选),图像在x轴、y轴原点附近的留白(padding),该值越大,留白距离越大,图像远离坐标原点
# hist_kwds,与hist相关的字典参数,对角线上直方图的参数元组,这个参数指定bin(箱子)的个数,也就是总共有几条条状图
# s,描出的点的大小
# c颜色,这里是按照训练集的类型着色
# cmap=mglearn.cm3 mylearn实用函数库,主要对图进行一些美化等私有功能
grr = pd.plotting.scatter_matrix(iris_dataframe, alpha=0.8, diagonal='hist', figsize=(15, 15), marker='o',  ax=None,
                                 range_padding=0, hist_kwds={'bins': 20}, s=60, c=y_train, cmap=mglearn.cm3)
# 通过matplolib.pyplot显示图片
matplotlib.pyplot.show()

使用邻近算法进行构建数据模型

k近邻算法中k的含义是,我们可以考虑训练集中与新数据点最近的任意k个邻居(比如说,距离最近的3个或5个邻居),而不是只考虑最近的那一个。然后,我们可以用这些邻居中数量最多的类别做出预测。现在我们只考虑一个邻居的情况

# 设置训练参数,n_neighbors邻居数,
knn = KNeighborsClassifier(n_neighbors=1)

# 开始训练
knn.fit(X_train, y_train)

模型评估

将测试数据集作为参数传入已经构建好的模型中,将经过处理后得到的模型预测目标数据集与测试目标数据集作比对得到测试精度,从而评估模型的可靠性

# 得到模型预测目标数据集(一维数组)
y_pred = knn.predict(X_test)

# 将模型目标预测数据集与测试目标数据集比对得到测试精度
accuracy = np.mean(y_pred == y_test)

做预测

# 改变预测参数的格式使得可以传参
X_new = np.array([[5, 2.9, 1, 0.2]])

# 开始预测预测,预测时传入的参数应为类似二维数组(实则为一个对象)的格式
prediction = knn.predict(X_new)

需要导入的库

import sys
import pandas as pd
import matplotlib
import numpy as np
import scipy as sp
import IPython
import sklearn
import mglearn
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

np.mean说明

是无监督学习,解决的是聚类问题,即训练数据集没有分类标签,通过K-Means算法将数据集划分为K类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值