K最近傍分類例に

データのロード

アイリスを使用してデータセット

#从sklearn.datasets导人iris数据加载器。租
from sklearn.datasets import load_iris
#使用加载器读取数据并且存人变量iris.
iris=load_iris ()
#查验数据规模。
iris.data.shape
(150, 4)
#查看数据说明。对于一名机器学习的实践者来讲,这是一个好习惯。
print(iris.DESCR)
Iris Plants Database
====================

Notes
-----
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%[email protected])
    :Date: July, 1988

This is a copy of UCI ML iris datasets.
http://archive.ics.uci.edu/ml/datasets/Iris

The famous Iris database, first used by Sir R.A Fisher

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.

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 ...

上記識別符号データとデータ自体が記載されていることにより、学習データの合計は、3つの異なる亜種に分布均一アイリスアイリス・データ・サンプル150とを設定し、各データサンプルは、花弁の四つの異なる形状であり、萼特徴について説明しました。

データ処理

テストセットを指定せず、したがって従来、データは、モデルのトレーニングに使用されるサンプルの残りの75%を試験するために、ランダムに分割するサンプルの25%が必要です。

#从sklearn.cross validation里选择导人train test_ split 用于数据分割。
from sklearn.cross_validation import train_test_split
#从使用train test_ split,利用随机种子random state采样258的数据作为测试集。
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target,
test_size=0.25, random_state = 33)
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.
  "This module will be removed in 0.20.", DeprecationWarning)

モデルの構築

K最近傍分類器用いて虹彩(アイリス)データクラス予測

#从sklearn.preprocessing里选择导人数据标准化模块。
from sklearn.preprocessing import StandardScaler
#从sklearn. neighbors里选择导人KNeighborsClassifier,即K近邻分类器。
from sklearn.neighbors import KNeighborsClassifier
#对训练和测试的特征数据进行标准化。
ss = StandardScaler ()
x_train = ss.fit_transform(x_train)
x_test = ss.transform(x_test)

モデルの評価

使用精度、再現率、精度及びF1指標、虹彩予測タスクの古典的な品種にKモデルの性能評価の4小節。

#使用K近邻分类器对测试数据进行类别预测,预测结果储存在变量y_predict中。
knc = KNeighborsClassifier ()
knc.fit(x_train, y_train)
y_predict = knc.predict(x_test)
#使用K近邻分类器对测试数据进行类别预测,预测结果储存在变量y_predict中。
knc = KNeighborsClassifier ()
knc.fit(x_train, y_train)
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
#依然使用sklearn .metrics里面的classification report 模块对预测结果做更加详细的分析。
from sklearn .metrics import classification_report
print(classification_report(y_test, y_predict, target_names = iris.target_names))

             precision    recall  f1-score   support

     setosa       1.00      1.00      1.00         8
 versicolor       0.73      1.00      0.85        11
  virginica       1.00      0.79      0.88        19

avg / total       0.92      0.89      0.90        38

試験サンプル38の分類のK最近傍分類器の精度は、0.92.0.89それぞれ約89.474パーセントの虹彩、平均精度、再現率およびインジケータF1及び0.90です。

ノンパラメトリックモデルに属するK最近傍は非常に単純です。しかし、それは非常に高い計算の複雑さとメモリ消費につながった、この決定アルゴリズムです。各プロセスのモデル試験サンプルは、すべての学習サンプルのメモリにプリロードされたために必要とされているので、ソート、類似度を計算し、分類決定を行うその後、標識された試料を訓練隣人最も近い.Kを選択して、で1を横断しています。これは、正方形のアルゴリズムの複雑さのレベルであり、データがわずかに大きい規模になると、ユーザーはより多くの計算時間のコストを比較検討する必要があります。

マイクロチャンネル公共数:より多くのコンテンツのための220邯鄲ロード聖歌ビン病院

公開された58元の記事 ウォン称賛77 ビュー90000 +

おすすめ

転載: blog.csdn.net/weixin_41503009/article/details/104316788