Aufbau einer K-nächste Nachbarn Klassifikator mit PCA-Werte

Neuling auf Daten der Wissenschaft hier.

Ich habe einen Datensatz der hohen Dimensionalität. Es sind 83 Proben mit 2308 Dimensionen, seine Form ist (83, 2308). Darüber hinaus habe ich eine Reihe von Beispiel-Typen, die 83 in der Länge, ist seine Form (83,).

Ich versuche zu trainieren, ein KNN-Klassifizierer (2 Nachbarn) mit einer Teilmenge von meiner original-Datenbestand und es verwenden, um vorherzusagen, Art der Probe der übrigen Datenpunkte (test-subset). Meine Trainingsdaten der Form (66, 2308) und ich trainiere es, um ein Beispiel Typen-array der Form (63,).

Mein Ziel ist es zu trainieren, meine KNN-Klassifikator mit einer Ausbildung legen, das reduziert die Dimensionalität, also ich habe die PCA auf. Ich habe immer nur die ersten 10 Stück. Nach der Umwandlung meiner Ausbildung gesetzt, seine Form ist (63, 10).

Leider, jetzt bin ich nicht in der Lage zu verwenden, dies reduziert die Ausbildung eingestellt, um Vorhersagen zu treffen, die auf meine ungekürzten Test set. Läuft mein code gibt mir die Fehlermeldung: „Abfrage von Daten dimension übereinstimmen muss Trainingsdaten dimension“.

Ich würde gerne in der Lage sein zu integrieren, und die ersten 10 Stück in meine KNN-Modell. Jede Hilfe auf dies zu realisieren?

Hier ist mein code für Referenz:

import numpy as np
from sklearn.neighbors import KNeighborsClassifier

# creates my training and testing partitions
train_ind, test_ind = test_train_id(cancer_types, 0.8)

# create the train partition
genes_train = genes[train_ind, :]

# perform PCA on the train partition
gene_pca = PCA(10)
gene_pca.fit(genes_train)

# transform the gene partition with the PCA
genes_train_red = gene_pca.transform(genes_train) 

# the KNN model
model = KNeighborsClassifier(2)
model.fit(genes_train_red, cancer_types[train_ind])

predict = model.predict(genes[train_ind])

np.mean(predict == cancer_types[test_ind])


print('The unreduced train set has shape',genes[train_ind, :].shape)
print('The label set being trained to has shape', cancer_types[train_ind].shape)
print('------', '\n', 'After PCA, the reduced train set has shape', genes_train_red.shape ,'\n')

print('The unreduced test set has shape', genes[test_ind].shape)
InformationsquelleAutor Nick F | 2017-02-26



One Reply
  1. 1

    Sie versehen Ihr Modell auf die reduzierten Dimensionen mit dieser Zeile:

    model.fit(genes_train_red, cancer_types[train_ind])

    Sie Fragen sich jetzt, um vorherzusagen, einige andere Daten wie diese:

    predict = model.predict(genes[train_ind])

    Natürlich model.predict() können nur Vorhersagen Proben mit dem gleichen input-dimension (Sie hatte es nur 10 PCA-Komponenten). Also ohne Umwandlung Ihrer neuen Eingabe (die ist noch in seiner ursprünglichen form nicht reduziert PCA), funktioniert es nicht.

    Richtigen Anwendung würde wie folgt Aussehen:

    predict = model.predict(gene_pca.transform(genes[train_ind]))
    • Danke für Eure Antworten! Das ist das, was ich suchte: eine Möglichkeit, Vorhersagen zu machen über meine ursprünglichen dataset während der Verwendung reduziert Trainingsdaten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.