Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 分类后如何将名称列与结果匹配_Python_Csv_Scikit Learn - Fatal编程技术网

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不,只使用逗号,我只是想让大家更容易理解