Python 分类后如何将名称列与结果匹配
以下是我的数据示例:Python 分类后如何将名称列与结果匹配,python,csv,scikit-learn,Python,Csv,Scikit Learn,以下是我的数据示例: 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是类1。 我使用pandas从.csv文件导入数据,我在两个不同的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
当我训练数据时,我只使用2->7中的列作为输入,类作为输出。但是当我在模型训练和保存后测试它时,我需要知道哪些文件属于哪个类。我的意思是如何知道d.txt是类1。
我使用pandas从.csv文件导入数据,我在两个不同的csv文件中使用train set和test set。在训练阶段,我使用列2-7作为输入,列类作为目标,这些列是数字列。filename类只是文本。在测试阶段,我需要知道预测类的文件名。但我不知道怎么做
谢谢
p/s:我使用MLP、SVM、NB作为分类器。假设您的数据为
.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"])
您的数据是否用破折号分隔?每个破折号分隔一列?您可能需要检查数据,因为标头中的列数与文件的其余部分不匹配。另外,假设我的分类器输出0,您将如何区分
“a.txt”
、“b.txt”
和“c.txt”
?通常您会使用svm.predict()
并传入特征向量,但如果没有看到您的代码,我无法确定。@yellow01不,只使用逗号,我只是想让大家更容易理解