机器学习之路: python k近邻分类器 鸢尾花分类预测

使用python语言 学习k近邻分类器的api

欢迎来到我的git查看源代码: https://github.com/linyi0604/kaggle

  1 from sklearn.datasets import load_iris
  2 from sklearn.cross_validation import train_test_split
  3 from sklearn.preprocessing import StandardScaler
  4 from sklearn.neighbors import KNeighborsClassifier
  5 from sklearn.metrics import classification_report
  6
  7 ‘‘‘
  8 k近邻分类器
  9 通过数据的分布对预测数据做出决策
 10 属于无参数估计的一种
 11 非常高的计算复杂度和内存消耗
 12 ‘‘‘
 13
 14 ‘‘‘
 15 1 准备数据
 16 ‘‘‘
 17 # 读取鸢尾花数据集
 18 iris = load_iris()
 19 # 检查数据规模
 20 # print(iris.data.shape)    # (150, 4)
 21 # 查看数据说明
 22 # print(iris.DESCR)
 23 ‘‘‘
 24 Iris Plants Database
 25 ====================
 26
 27 Notes
 28 -----
 29 Data Set Characteristics:
 30     :Number of Instances: 150 (50 in each of three classes)
 31     :Number of Attributes: 4 numeric, predictive attributes and the class
 32     :Attribute Information:
 33         - sepal length in cm
 34         - sepal width in cm
 35         - petal length in cm
 36         - petal width in cm
 37         - class:
 38                 - Iris-Setosa
 39                 - Iris-Versicolour
 40                 - Iris-Virginica
 41     :Summary Statistics:
 42
 43     ============== ==== ==== ======= ===== ====================
 44                     Min  Max   Mean    SD   Class Correlation
 45     ============== ==== ==== ======= ===== ====================
 46     sepal length:   4.3  7.9   5.84   0.83    0.7826
 47     sepal width:    2.0  4.4   3.05   0.43   -0.4194
 48     petal length:   1.0  6.9   3.76   1.76    0.9490  (high!)
 49     petal width:    0.1  2.5   1.20  0.76     0.9565  (high!)
 50     ============== ==== ==== ======= ===== ====================
 51
 52     :Missing Attribute Values: None
 53     :Class Distribution: 33.3% for each of 3 classes.
 54     :Creator: R.A. Fisher
 55     :Donor: Michael Marshall (MARSHALL%[email protected])
 56     :Date: July, 1988
 57
 58 This is a copy of UCI ML iris datasets.
 59 http://archive.ics.uci.edu/ml/datasets/Iris
 60
 61 The famous Iris database, first used by Sir R.A Fisher
 62
 63 This is perhaps the best known database to be found in the
 64 pattern recognition literature.  Fisher‘s paper is a classic in the field and
 65 is referenced frequently to this day.  (See Duda & Hart, for example.)  The
 66 data set contains 3 classes of 50 instances each, where each class refers to a
 67 type of iris plant.  One class is linearly separable from the other 2; the
 68 latter are NOT linearly separable from each other.
 69
 70 References
 71 ----------
 72    - Fisher,R.A. "The use of multiple measurements in taxonomic problems"
 73      Annual Eugenics, 7, Part II, 179-188 (1936); also in "Contributions to
 74      Mathematical Statistics" (John Wiley, NY, 1950).
 75    - Duda,R.O., & Hart,P.E. (1973) Pattern Classification and Scene Analysis.
 76      (Q327.D83) John Wiley & Sons.  ISBN 0-471-22361-1.  See page 218.
 77    - Dasarathy, B.V. (1980) "Nosing Around the Neighborhood: A New System
 78      Structure and Classification Rule for Recognition in Partially Exposed
 79      Environments".  IEEE Transactions on Pattern Analysis and Machine
 80      Intelligence, Vol. PAMI-2, No. 1, 67-71.
 81    - Gates, G.W. (1972) "The Reduced Nearest Neighbor Rule".  IEEE Transactions
 82      on Information Theory, May 1972, 431-433.
 83    - See also: 1988 MLC Proceedings, 54-64.  Cheeseman et al"s AUTOCLASS II
 84      conceptual clustering system finds 3 classes in the data.
 85    - Many, many more ...
 86
 87    共有150个数据样本
 88    均匀分布在3个亚种上
 89    每个样本采样4个花瓣、花萼的形状描述
 90 ‘‘‘
 91
 92 ‘‘‘
 93 2 划分训练集合和测试集合
 94 ‘‘‘
 95 x_train, x_test, y_train, y_test = train_test_split(iris.data,
 96                                                     iris.target,
 97                                                     test_size=0.25,
 98                                                     random_state=33)
 99
100 ‘‘‘
101 3 k近邻分类器 学习模型和预测
102 ‘‘‘
103 # 训练数据和测试数据进行标准化
104 ss = StandardScaler()
105 x_train = ss.fit_transform(x_train)
106 x_test = ss.transform(x_test)
107
108 # 建立一个k近邻模型对象
109 knc = KNeighborsClassifier()
110 # 输入训练数据进行学习建模
111 knc.fit(x_train, y_train)
112 # 对测试数据进行预测
113 y_predict = knc.predict(x_test)
114
115 ‘‘‘
116 4 模型评估
117 ‘‘‘
118 print("准确率:", knc.score(x_test, y_test))
119 print("其他指标:\n", classification_report(y_test, y_predict, target_names=iris.target_names))
120 ‘‘‘
121 准确率: 0.8947368421052632
122 其他指标:
123               precision    recall  f1-score   support
124
125      setosa       1.00      1.00      1.00         8
126  versicolor       0.73      1.00      0.85        11
127   virginica       1.00      0.79      0.88        19
128
129 avg / total       0.92      0.89      0.90        38
130 ‘‘‘

原文地址:https://www.cnblogs.com/Lin-Yi/p/8970527.html

时间: 2024-10-23 22:19:22

机器学习之路: python k近邻分类器 鸢尾花分类预测的相关文章

机器学习 —— 基础整理(三):非参数方法——Parzen窗估计、k近邻估计;k近邻分类器

本文简述了以下内容: (一)非参数方法 (二)Parzen窗估计 (三)k近邻估计 (四)k近邻算法(k-nearest neighbor,kNN) (一)非参数方法(Non-parametric method) 对于生成模型来说,重要的地方在于类条件概率密度 $p(\textbf x|\omega_i)$ 的估计.上一篇介绍的参数方法,假定其是一个固定的分布密度形式,然后估计这个显式表达的函数中未知的参数.但这里存在两个问题:首先,假定的形式可能是不准确的,实际数据并不符合这个假设:其次,经典

机器学习小记——KNN(K近邻) ^_^ (一)

为了让绝大多数人都可以看懂,所以我就用简单的话语来讲解机器学习每一个算法 第一次写ML的博文,所以可能会有些地方出错,欢迎各位大佬提出意见或错误 祝大家开心进步每一天- 博文代码全部为python 简单的说一下什么是机器学习,机器学习英文名称是Machine Learning, ML 机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科.专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有

机器学习之KNN(k近邻)算法

1.算法介绍k近邻算法是学习机器学习的入门算法,可实现分类与回归,属于监督学习的一种.算法的工作原理是:输入一个训练数据集,训练数据集包括特征空间的点和点的类别,可以是二分类或是多分类.预测时,输入没有类别的点,找到k个与该点距离最接近的点,使用多数表决的方法,得出最后的预测分类. 2.算法优缺点优点:没有高深的数学思想,容易理解,精度高,对异常值不敏感,无数据输入假定:缺点:计算复杂度高,空间复杂度高:理解:因为knn算法是寻找与目标点接近的点,在计算时,异常值与目标点的"距离"会较

机器学习之路: python 回归树 DecisionTreeRegressor 预测波士顿房价

python3 学习api的使用 git: https://github.com/linyi0604/MachineLearning 代码: 1 from sklearn.datasets import load_boston 2 from sklearn.cross_validation import train_test_split 3 from sklearn.preprocessing import StandardScaler 4 from sklearn.tree import De

机器学习算法( 二、K - 近邻算法)

一.概述 k-近邻算法采用测量不同特征值之间的距离方法进行分类. 工作原理:首先有一个样本数据集合(训练样本集),并且样本数据集合中每条数据都存在标签(分类),即我们知道样本数据中每一条数据与所属分类的对应关系,输入没有标签的数据之后,将新数据的每个特征与样本集的数据对应的特征进行比较(欧式距离运算),然后算出新数据与样本集中特征最相似(最近邻)的数据的分类标签,一般我们选择样本数据集中前k个最相似的数据,然后再从k个数据集中选出出现分类最多的分类作为新数据的分类. 二.优缺点 优点:精度高.对

机器学习之路: python 决策树分类 预测泰坦尼克号乘客是否幸存

使用python3 学习了决策树分类器的api 涉及到 特征的提取,数据类型保留,分类类型抽取出来新的类型 需要网上下载数据集,我把他们下载到了本地, 可以到我的git下载代码和数据集: https://github.com/linyi0604/MachineLearning 1 import pandas as pd 2 from sklearn.cross_validation import train_test_split 3 from sklearn.feature_extraction

机器学习之路: python 线性回归LinearRegression, 随机参数回归SGDRegressor 预测波士顿房价

python3学习使用api 线性回归,和 随机参数回归 git: https://github.com/linyi0604/MachineLearning 1 from sklearn.datasets import load_boston 2 from sklearn.cross_validation import train_test_split 3 from sklearn.preprocessing import StandardScaler 4 from sklearn.linear

K近邻算法——多分类问题

给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该类输入实例分为这个类. KNN是通过测量不同特征值之间的距离进行分类.它的的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.K通常是不大于20的整数.KNN算法中,所选择的邻居都是已经正确分类的对象.该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别. 下面通过一个简单的例子说明一下

python实现k近邻

k近邻分类器大概想法是  在已知许多样本分好类的情况下,给定一个新样本i, 计算得到与i最接近的k个样本,那么假设这k个样本为a1, a2, ... , ak ,总共五个类别{1,2,3,4,5}, 其中就有{a1:3, a2:4, a3:1, ... ,  ak:2},a1 所对的值3 就为它的类别,现在如果在这个k个样本里,属于类别3 的样本最多,那么我们就可以把样本i 归为类别3 现在来用python 简单实现下这个分类器 首先定义一下数据集结构 数据矩阵 X_train表示训练样本矩阵,