SORU
6 EYLÜL 2011, Salı


Nasıl en yakın komşu algoritması kullanarak Python ile veri sınıflandırabilir miyim?

(Umarım) en yakın komşu algoritması ile bazı verileri sınıflandırmak gerekiyor. Bu sorunu araştırdım ve pek çok kütüphane (PyML, mlPy ve Turuncu dahil) buldum, ama buraya nereden başlayacağınızı emin değilim.

Nasıl k-NN uygulanması hakkında Python kullanarak gitmeli miyim?

CEVAP
7 EYLÜL 2011, ÇARŞAMBA


Özellikle Q bahsettiğiniz tekniği (k-En Yakın Komşu) verilen, şiddetle tavsiye ederimscikits.learn. [Notbu Cevap yayınlanmıştır sonra, bu Projenin baş geliştiricisi bu Proje için new homepage beni bilgilendirdi.]

Diğerleri bu kütüphane ayırt inandığım bir kaç özellik (en azından diğer Python onların çoğu, var olan kütüphaneler ML):

  • bir geniştanılama ve test kütüphane(çizme de dahil olmak üzere modüller, Matplotlib ile)--özellik seçimi algoritmaları içerir confusion matrix,, precision-recall, vb. ROC;

  • güzel bir seçim 'piller dahil'veri setleri(dahil el yazısı rakam, görüntülerin, yüz vb.) özellikle ML teknikleri için uygundur;

  • genişbelgeler(güzel bir sürpriz bu Proje olduğunu düşünürsek sadece iki yaşında) dahil olmak üzere öğreticiler ve adım adım kod tarafından sağlanan veri setleri kullanımı (örnek;

Özel durum (şu anda aklıma gelen en az) olmadan python ML kütüphaneleri mükemmeldir. (Düzine kadar en popüler python ML kütüphaneler listesi PyMVPA homepage bakın.)

Örneğin, son 12 ay içinde kullanmışffnet(:)neurolab(aynı zamanda:)PyBrain(Q-Öğrenme),neurolab(:)PyMVPA(SVM) (tüm kullanılabilir Python Package Index)--Bu değişir önemli olan birbirimizi w/r/t olgunluk, kapsam ve sağlanan altyapı, ama buldum hepsini için çok yüksek kalite.

Yine de, bu iyi olabilirscikits.öğrenin; örneğin, herhangi bir python ML kitaplığı--scikits dışında farkında değilim.--bilgi içeren herhangi bir üç özellikleri yukarıda (gerçi bir kaç tane sağlam örnek kodu ve/veya öğreticiler, hiçbiri, bildiğim kadarıyla bu entegre ile bir kütüphane araştırması dereceli veri setleri ve tanı algoritmaları).

İkinci olarak, kullanmak niyetinde tekniği verilirk-En Yakın Komşu) scikits.özellikle iyi bir seçim olduğunu öğrenin. Scikits.her biri için regression (döndürür puan) ve classification hem de kNN algoritmaları (döner sınıf bir etiket), yanı sıra ayrıntılı örnek kod içerir öğrenin.

Bu scikits kullanarak.k-En Yakın Komşu modülü (tam olarak) öğrenmek daha kolay olamazdı:

>>> # import NumPy and the relevant scikits.learn module
>>> import numpy as NP
>>> from sklearn import neighbors as kNN

>>> # load one of the sklearn-suppplied data sets
>>> from sklearn import datasets
>>> iris = datasets.load_iris()
>>> # the call to load_iris() loaded both the data and the class labels, so
>>> # bind each to its own variable
>>> data = iris.data
>>> class_labels = iris.target

>>> # construct a classifier-builder by instantiating the kNN module's primary class
>>> kNN1 = kNN.NeighborsClassifier()

>>> # now construct ('train') the classifier by passing the data and class labels
>>> # to the classifier-builder
>>> kNN1.fit(data, class_labels)
      NeighborsClassifier(n_neighbors=5, leaf_size=20, algorithm='auto')

Ne daha fazla, aksine neredeyse diğer tüm ML teknikleri, püf noktası k-en yakın komşular değil, bir kodlama çalışma sınıflandırıcı builder, oldukça zor adım yapı üretim-sınıf k-En Yakın Komşu sınıflandırıcı/regressor. sebat katman--yanihangi yakın komşularından seçilen depolama ve hızlı veri noktaları alma. KNN veri depolama katmanı için, scikits.bir için bir algoritma içerir öğrenintop ağacı(hangi neredeyse hiçbir şey görünüşe göre üstün olandan hakkında diğer bilmekkd-treeperformansı yüksek boyutlu özellik uzayı aşağılamak değil çünkü (k-NN) için geleneksel veri yapısı.

Ayrıca, k-En Yakın Komşu, uygun bir benzerlik ölçüsü (Öklid mesafe zamanki seçim, ama her zaman en iyisi değildir) gerektirir. Scikits.uygun bir seçimi için çeşitli mesafe ölçümleri yanı sıra test algoritmaları stand-birlikte modül oluşan bir bilgi içerir.

Son olarak, orada bir kaç kütüphaneler var almayan da, çünkü onlar kapsam (PyML, Bayesian); öncelikle 'kütüphaneler' geliştiriciler için daha ziyade uygulamaları için son kullanıcılar (örneğin, Portakal), veya olağandışı veya zor yüklemek bağımlılıklar (örneğin, mlpy gerektiren gal, hangi sırayla olmalı inşa kaynak) en azından benim işletim sistemi olan Mac OS X

(Not: scikits için geliştirici/committer değilim.Öğren.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • edwin maldonado

    edwin maldon

    28 Mart 2009
  • Tylerron

    Tylerron

    6 AĞUSTOS 2006
  • VOICE TV

    VOICE TV

    2 Aralık 2010