k近邻分类器之鸢尾花数据实战

读取iris数据集细节资料

#导入iris数据加载器
from sklearn.datasets import load_iris

#使用加载器读取数据并存入变量iris
iris = load_iris()
#查验数据规模
iris.data.shape

(150, 4)

#查看数据说明。
print(iris.DESCR)

… _iris_dataset:

Iris plants dataset

Data Set Characteristics:

:Number of Instances: 150 (50 in each of three classes)
:Number of Attributes: 4 numeric, predictive attributes and the class
:Attribute Information:
    - sepal length in cm
    - sepal width in cm
    - petal length in cm
    - petal width in cm
    - class:
            - Iris-Setosa
            - Iris-Versicolour
            - Iris-Virginica
            
:Summary Statistics:

============== ==== ==== ======= ===== ====================
                Min  Max   Mean    SD   Class Correlation
============== ==== ==== ======= ===== ====================
sepal length:   4.3  7.9   5.84   0.83    0.7826
sepal width:    2.0  4.4   3.05   0.43   -0.4194
petal length:   1.0  6.9   3.76   1.76    0.9490  (high!)
petal width:    0.1  2.5   1.20   0.76    0.9565  (high!)
============== ==== ==== ======= ===== ====================

:Missing Attribute Values: None
:Class Distribution: 33.3% for each of 3 classes.
:Creator: R.A. Fisher
:Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)
:Date: July, 1988

The famous Iris database, first used by Sir R.A. Fisher. The dataset is taken
from Fisher’s paper. Note that it’s the same as in R, but not as in the UCI
Machine Learning Repository, which has two wrong data points.

This is perhaps the best known database to be found in the
pattern recognition literature. Fisher’s paper is a classic in the field and
is referenced frequently to this day. (See Duda & Hart, for example.) The
data set contains 3 classes of 50 instances each, where each class refers to a
type of iris plant. One class is linearly separable from the other 2; the
latter are NOT linearly separable from each other.

… topic:: References

  • Fisher, R.A. “The use of multiple measurements in taxonomic problems”
    Annual Eugenics, 7, Part II, 179-188 (1936); also in “Contributions to
    Mathematical Statistics” (John Wiley, NY, 1950).
  • Duda, R.O., & Hart, P.E. (1973) Pattern Classification and Scene Analysis.
    (Q327.D83) John Wiley & Sons. ISBN 0-471-22361-1. See page 218.
  • Dasarathy, B.V. (1980) “Nosing Around the Neighborhood: A New System
    Structure and Classification Rule for Recognition in Partially Exposed
    Environments”. IEEE Transactions on Pattern Analysis and Machine
    Intelligence, Vol. PAMI-2, No. 1, 67-71.
  • Gates, G.W. (1972) “The Reduced Nearest Neighbor Rule”. IEEE Transactions
    on Information Theory, May 1972, 431-433.
  • See also: 1988 MLC Proceedings, 54-64. Cheeseman et al"s AUTOCLASS II
    conceptual clustering system finds 3 classes in the data.
  • Many, many more …

对数据集进行分割

#导入train_test_split用于数据分割
from sklearn.model_selection import train_test_split
#使用train_test_split,利用随机种子random_state采样25%的数据作为测试集
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size = 0.25, random_state = 33)

使用k近邻分类器对鸢尾花数据进行类别预测

#导入数据标准化模块
from sklearn.preprocessing import StandardScaler
#导入k近邻分类器
from sklearn.neighbors import KNeighborsClassifier
#对训练和测试的特征数据进行标准化
ss = StandardScaler()
x_train = ss.fit_transform(x_train)
x_test = ss.transform(x_test)

对k近邻分类器在鸢尾花数据上的预测性能进行评估

#使用k近邻分类器对测试数据进行类别预测,预测结果储存在变量y_predict
knc = KNeighborsClassifier()
knc.fit(x_train,y_train)

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

y_predict = knc.predict(x_test)
#使用模型自带的评估函数进行准确性测评
print('The Accuracy of K-Nearest Neighbor Classifier is', knc.score(x_test, y_test))

The Accuracy of K-Nearest Neighbor Classifier is 0.8947368421052632

#使用classification_report模块对预测结果做更详细的分析
from sklearn.metrics import classification_report
print(classification_report(y_test, y_predict, target_names = iris.target_names))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值