封面

第1章 引言

1.1思维导图

1.2代码

%matplotlib inline
import pandas as pd
import sys
import scipy as sp
import IPython
import sklearn
import matplotlib.pyplot as plt
import numpy as np
import mglearn#在-10和10之间生成一个数列,100个
x = np.linspace(-10,10,100)
y = np.sin(x)
plt.plot(x,y,marker = "x")
'''
plt.plot(x,y,format_string,**kwargs)
x轴数据,y轴数据,marker = "x",用x来标记每一个数据点
'''
#data数组的形状是样本数乘以特征数
#yuanweihua sanfenlei wenti
from sklearn.datasets import load_iris
iris_dataset = load_iris()#fanhuiyige Bunch duixiang yuzidianleisi limianbaohan jianhezhi
print("keys of iris_dataset:\n{}".format(iris_dataset.keys()))

keys of iris_dataset:
dict_keys([‘data’, ‘target’, ‘target_names’, ‘DESCR’, ‘feature_names’, ‘filename’])

print(iris_dataset['DESCR'][:193] + "\n...")#shujuji jianyaoshuoming

… _iris_dataset:
Iris plants dataset
Data Set Characteristics:

:Number of Instances: 150 (50 in each of three classes)
:Number of Attributes: 4 numeric, pre

from sklearn.model_selection import train_test_split#打乱数据集并以75:25进行拆分
X_train,X_test,y_train,y_test = train_test_split(iris_dataset['data'],iris_dataset['target'],random_state = 0)
#利用 weisuijishu shengchengqi jiang shujuji daluan
print("X_train shape:{}".format(X_train.shape))
print("y_train shape:{}".format(y_train.shape))
print("X_test shape:{}".format(X_test.shape))
print("y_test shape:{}".format(y_test.shape))

X_train shape:(112, 4)
y_train shape:(112,)
X_test shape:(38, 4)
y_test shape:(38,)

iris_dataframe = pd.DataFrame(X_train,columns=iris_dataset.feature_names)
#
grr = pd.plotting.scatter_matrix(iris_dataframe, c=y_train,figsize=(15,15),marker='o',hist_kwd={'bins':20},s=60,alpha=.8,cmap=mglearn.cm3)
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train,y_train)#基于训练集来构造模型,返回knn对象本身,并作原处修改
'''
knn对象对算法进行封装
包括用训练数据构建模型的算法
包括对新数据点进行预测的算法
包括算法从训练数据中提取的信息
'''

KNeighborsClassifier(algorithm=‘auto’, leaf_size=30, metric=‘minkowski’,
metric_params=None, n_jobs=None, n_neighbors=1, p=2,
weights=‘uniform’)

#预测
#将这朵花的测量数据转换为二维Numpy数组的一行,因为scikit-learn的输入数据必须是二维数组
X_new = np.array([[5,2.9,1,0.2]])
print("X_new.shape:{}".format(X_new.shape))

X_new.shape:(1, 4)

#调用knn对象的predict方法来进行预测
prediction = knn.predict(X_new)
print("prediction:{}".format(prediction))
print("predicted target name:{}".format(iris_dataset['target_names'][prediction]))

prediction:[0]
predicted target name:[‘setosa’]

#模型评估

1.3涉及到的算法
K近邻算法
kNN算法(基于实例的算法)
参考书《机器学习与应用》——雷明

思想
要确定一个样本的类别,可以计算它与所有训练样本的距离,然后找出和该样本最接近的k个样本,统计这些样本的类别进行投票,票数最多的那个类就是分类结果。

预测算法
k近邻算法没有要求解的模型参数,因此没有训练过程。k由人工指定。预测时才会计算待预测样本与训练样本的距离。

l个训练样本(xi,yi),xi是特征向量,yi是标签值,设定参数k,假设类型数是c,待分类样本的特征向量是x。预测算法的流程如下:
(1)在训练样本集中找出离x最近的k个样本,假设这些样本的集合是N。
(2)统计集合N 中每一类样本的个数Ci,i=1,…,c。
(3)最终的分类结果是arg maxiCi

使用该算法时需要注意:
(1)当训练样本数大,特征向量维数很高的时候:
可以使用高效的部分排序算法,只找出最小的k个数;
k-d树实现快速的近邻样本查找。
(2)参数k的取值
根据问题和数据的特点来确定。
另有带权重的k近邻算法模糊k近邻算法
(3)用于回归问题
样本的回归预测输出值为所有邻居的标签均值(也可以添加权重)。

距离定义
常用距离
欧氏距离:特征向量每个分量归一化,只是将特征向量看作空间中的点,没有考虑这些样本特征向量的概率分布规律。

Mahalanobis距离:概率意义上的距离,度量两个随机向量的相似度。

Bhattacharyya距离:两个离散型或连续型概率分布的相似性。

距离度量学习
kNN算法的精度很大程度上依赖于所使用的距离度量标准,为此出现了一种从带标签的样本集中学习得到距离度量矩阵的方法。

应用
文本分类、图像分类

基于OpenCV的实验程序
1.OpenCV的安装于配置

《Python机器学习基础教程》(一)——引言(k近邻算法)相关推荐

  1. Python机器学习基础教程-第2章-监督学习之K近邻

    前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...

  2. python基础教程免费下载-《Python机器学习基础教程》高清版免费PDF下载

    Python机器学习基础教程-[德] 安德里亚斯·穆勒(Andreas C.Müller)[美]莎拉·吉多(Sarah Guido) 著,张亮(hysic) 译 下载地址1:网盘下载 下载地址2:网盘 ...

  3. Python机器学习基础教程(1)Irises(鸢尾花)分类之新手上路

    一.感谢博客的内容提供的参考 标题:最新版学习笔记---Python机器学习基础教程(1)Irises(鸢尾花)分类---附完整代码 作者:非鱼子焉 地址:https://zhu-rui.blog.c ...

  4. python机器学习基础教程-学习笔记(一)

    了解 scikit-learn 及其用法是很重要的,但还有其他一些库也可以改善你的编程体验. scikit-learn 是基于 NumPy 和 SciPy 科学计算库的.此外,我们还会用到 panda ...

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

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

  6. 回归素材(part4)--python机器学习基础教程

    学习笔记,仅供参考 文章目录 python机器学习基础教程 线性模型 用于回归的线性模型 过拟合 岭回归 lasso python机器学习基础教程 线性模型 用于回归的线性模型 过拟合

  7. 泛化,过拟合,欠拟合素材(part1)--python机器学习基础教程

    学习笔记,仅供参考,有错必纠 文章目录 python机器学习基础教程 泛化.过拟合.欠拟合 模型复杂度与训练集大小的关系 python机器学习基础教程 泛化.过拟合.欠拟合 判断一个算法在新数据上表现 ...

  8. 机器学习第七章之K近邻算法

    K近邻算法(了解) 7.1 K近邻算法 7.1.1 K近邻算法的原理介绍 7.1.2 K近邻算法的计算步骤及代码实现 7.2 数据预处理之数据归一化 7.2.1 min-max标准化 7.2.2 Z- ...

  9. 2、python机器学习基础教程——K近邻算法鸢尾花分类

    一.第一个K近邻算法应用:鸢尾花分类 import numpy as np from sklearn.datasets import load_iris from sklearn.model_sele ...

最新文章

  1. 谁说程序员干不过写ppt的,码农就该这样雄起
  2. Oracle的rownum原理和使用
  3. Spring IOC容器和获取组件对象源码分析
  4. linux 下查看文件修改时间
  5. window10官方工具在线升级失败,终极解决方案
  6. vbs教程《变量使用》
  7. java tuscany_Apache Tuscany Java 1.1发布
  8. cf Educational Codeforces Round 47 E. Intercity Travelling
  9. APISpace 预热开启
  10. 【转】 看《墨攻》理解IoC概念
  11. idata 单片机 新唐_【nuvoton新唐8051单片机】NuTiny-SDK-N76E003开发板
  12. 手游自动化测试框架实现原理
  13. 博升机器人_乐博乐博机器人
  14. 10.11 学习记录
  15. MySQL运动会管理系统_运动会管理系统(JAVA,JSP,SERVLET,SQLSERVER)
  16. PYPL 4 月排行:Python 最流行,Java 老矣,尚能饭否?
  17. 基于卡方的独立性检验
  18. python求圆柱表面积_ZZULIOJ.1011: 圆柱体表面积 —— 1021:三个整数的最大值(C语言 Vs Python)...
  19. 适用于Java开发人员的微服务:持续集成和持续交付
  20. KPI考核系统实战之一:环境搭建

热门文章

  1. 小型防雨箱式柴油发电机
  2. Pytest基础之强大的mark使用教程
  3. ubuntu 安装go
  4. win10下桌面图标显示异常
  5. 从教育的角度观察第七次人口普查主要情况
  6. ROS Navigation之amcl源码解析(完全详解)
  7. python gzip文件流解压方式
  8. 遥感 大气校正 6S代码参数设置
  9. 论文阅读-使用CNN从双平面X光片走向自动化3D脊柱重建以进行统计脊柱模型拟合
  10. PPS卖给百度了:下一个视频网站还会远吗