2017-05-24 11 views
0

-scikit lernen Dies ist ein Beispiel meiner Daten:Wie der Name Spalte mit Ergebnis übereinstimmen nach der Klassifizierung

filename,2,3,4,5,6,7,class  
a.txt,0,0,0,0,0,0,0  
b.txt,0,0,0,0,0,1,0  
c.txt,0,0,0,0,1,0,0  
d.txt,1,0,1,0,0,1,1 

Wenn ich meine Daten trainieren, verwende ich nur die Spalten von 2 -> 7 als Eingabe, Klasse als Ausgabe. Aber wenn ich das Modell nach dem Training und dem Speichern teste, muss ich wissen, welche Dateien zu welcher Klasse gehören. Ich meine, wie man weiß, dass d.txt Klasse 1 ist. Ich benutze Pandas, um die Daten von CSV-Datei zu importieren, ich benutze Zugset und Testset in 2 verschiedenen CSV-Dateien. In der Zugphase verwende ich die Spalten 2-7 als Eingabe und die Spaltenklasse als Ziel, diese Spalten sind numerisch. Die Dateinamensklasse ist nur Text. In der Testphase muss ich den Dateinamen mit der vorhergesagten Klasse kennen. Aber ich weiß nicht, wie ich das machen soll.

Dank

P/s: Ich habe MLP, SVM, NB als Klassifizierer.

+0

Sind Ihre Daten durch Bindestriche getrennt? Jeder Strich trennt eine Spalte? Möglicherweise möchten Sie Ihre Daten überprüfen, da die Anzahl der Spalten in der Kopfzeile nicht mit dem Rest der Datei übereinstimmt. Angenommen, meine Klassifikatorausgaben ** 0 **, wie werden Sie von "a.txt", "b.txt" und "c.txt" unterscheiden? – yellow01

+0

Normalerweise würden Sie 'svm.predict()' verwenden und den Feature-Vektor übergeben, aber ich würde nicht sicher wissen, ohne Ihren Code zu sehen. – Tony

+0

@ yellow01 nein, nur durch Kommas, ich zeige das nur, um leichter zu verstehen –

Antwort

0

Angenommen, Ihre Daten in .csv Format:

filename,2,3,4,5,6,7,class 
a.txt,0,0,0,0,0,0,0 
b.txt,0,0,0,0,0,1,0 
c.txt,0,0,0,0,1,0,0 
d.txt,1,0,1,0,0,1,1 

Sie können die Ausgabe der entsprechenden Dateinamen zu einer vorhergesagten-Klasse:

features=[1,0,1,0,0,1] #input 
output=clf.predict([features])[0] #predicted class 
print(df[df["class"]==output]["filename"]) #corresponding filename 

Beachten Sie, dass in Ihrem Beispiel sind Sie das Problem, vor dem die Anzahl der Merkmale ist größer als die Anzahl der Beispiele, daher kann sich der Klassifikator verschlechtern.

Hoffentlich haben Sie nur eine Probe Ihrer Daten gegeben. In diesem Fall wirst du wahrscheinlich gut sein. Achten Sie nur darauf, welchen Klassifikator Sie verwenden möchten.

Voll Code:

import numpy as np 
import pandas as pd 
from sklearn import svm 

df=pd.read_csv('file.csv') 

X = df.iloc[:,1:7].values 
y = df.iloc[:,7:8].values 
clf = svm.SVC() #using SVM as classifier 
clf.fit(X, y) 

features=[1,0,1,0,0,1] 
output=clf.predict([features])[0] 
print(df[df["class"]==output]["filename"]) 
Verwandte Themen