这是我的数据的一个例子:
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当我训练我的数据时,我只使用来自2 -> 7的列作为输入,类作为输出。但是,当我在对模型进行训练和保存之后进行测试时,我需要知道哪些文件属于哪个类。我的意思是,如何知道d.txt是第一类,我用熊猫从.csv文件中导入数据,在两个不同的csv文件中使用训练集和测试集。在列车阶段,我使用列2-7作为输入,列类作为目标,这些列是数字的。文件名类只是文本。在测试阶段,我需要知道带有预测类的文件名。但我不知道该怎么做。
谢谢
P/s:我使用MLP,SVM,NB作为分类器。
发布于 2017-05-24 17:42:17
假设您的数据是.csv格式的:
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可以使用以下方法将相应的文件名输出到预测的类:
features=[1,0,1,0,0,1] #input
output=clf.predict([features])[0] #predicted class
print(df[df["class"]==output]["filename"]) #corresponding filename请注意,在您的示例中,您面临的问题是,特性的数量大于示例的数量,因此分类器可能会恶化。
希望你只是提供了你的数据样本。在这种情况下,你很可能是个好人。注意使用什么分类器就行了。
完整代码:
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"])https://stackoverflow.com/questions/44163771
复制相似问题