Python 在3个不同分类器上使用相同的数据集输出相同的混淆矩阵/准确度分数
我面临一个问题,三个不同的分类器,都在同一个数据集(sklearn iris数据集)上训练,输出完全相同的精度分数和混淆矩阵。我给我的教授发了电子邮件,问她这是否正常,如果不是,她有什么建议,她给我的基本上是“这不正常,回去看看你的代码” 从那以后,我对我的代码做了相当多的研究,但我似乎看不到发生了什么。我希望这里的人能给我一些启示,我也能从这次经历中学到一些东西 这是我的密码:Python 在3个不同分类器上使用相同的数据集输出相同的混淆矩阵/准确度分数,python,machine-learning,scikit-learn,classification,supervised-learning,Python,Machine Learning,Scikit Learn,Classification,Supervised Learning,我面临一个问题,三个不同的分类器,都在同一个数据集(sklearn iris数据集)上训练,输出完全相同的精度分数和混淆矩阵。我给我的教授发了电子邮件,问她这是否正常,如果不是,她有什么建议,她给我的基本上是“这不正常,回去看看你的代码” 从那以后,我对我的代码做了相当多的研究,但我似乎看不到发生了什么。我希望这里的人能给我一些启示,我也能从这次经历中学到一些东西 这是我的密码: #数据集 从sklearn导入数据集 #数据预处理 从sklearn.model\u选择导入列车\u测试\u拆分 从
#数据集
从sklearn导入数据集
#数据预处理
从sklearn.model\u选择导入列车\u测试\u拆分
从sklearn.preprocessing导入StandardScaler
#分类器
从sklearn.svm导入SVC
从sklearn.tree导入DecisionTreeClassifier
从sklearn.linear_模型导入逻辑回归
#性能指标
从sklearn.metrics导入混淆矩阵、准确性得分
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
#将数据集读入内存。
iris=数据集。加载\u iris()
#将自变量和因变量提取为变量。
X=iris.data
y=iris.target
#分割训练和测试集(70/30)。
X_序列,X_测试,y_序列,y_测试=序列测试分割(X,y,测试大小=0.30,随机状态=0)
#将定标器适配到训练集,并变换训练集和测试集
#列,因为所有因变量都不包含分类数据,所以都是列。
ss=StandardScaler()
X_序列=ss.fit_变换(X_序列)
X_测试=ss.变换(X_测试)
#创建分类器。
dt_分类器=决策树分类器(随机_状态=0)
svm_分类器=SVC(核=rbf',随机_状态=0)
lr_分类器=逻辑回归(随机_状态=0)
#将分类器与训练数据相匹配。
dt_分类器拟合(X_序列,y_序列)
svm_分类器.fit(X_序列,y_序列)
lr_分类器。拟合(X_序列、y_序列)
#使用现在训练好的分类器进行预测。
dt_y_pred=dt_分类器.预测(X_检验)
svm_y_pred=svm_分类器。预测(X_测试)
lr_y_pred=lr_分类器.预测(X_检验)
#使用测试集的预测结果和实际结果创建混淆矩阵。
dt_cm=混淆矩阵(y_测试,dt_y_pred)
svm_cm=混淆矩阵(y_测试,svm_y_pred)
lr_cm=混淆矩阵(y_测试,lr_y_pred)
#使用测试集的预测结果和实际结果计算准确度分数。
dt_分数=准确度_分数(y_测试,dt_y_pred)
svm_分数=准确度_分数(y_测试,svm_y_pred)
lr_分数=准确度_分数(y_测试,lr_y_pred)
#打印每个分类器的混淆矩阵和精度分数。
打印('---决策树分类器---')
打印(f'混淆矩阵:\n{dt_cm}')
打印(f'精度分数:{dt\U分数}\n')
打印('---支持向量机分类器---')
打印(f'混淆矩阵:\n{svm\u cm}')
打印(f'精度分数:{svm_分数}\n')
打印('--Logistic回归分类器--')
打印(f'混淆矩阵:\n{lr_cm}')
打印(f'准确度分数:{lr_分数}')
输出:
--- Decision Tree Classifier ---
Confusion Matrix:
[[16 0 0]
[ 0 17 1]
[ 0 0 11]]
Accuracy Score:0.9777777777777777
--- Support Vector Machine Classifier ---
Confusion Matrix:
[[16 0 0]
[ 0 17 1]
[ 0 0 11]]
Accuracy Score:0.9777777777777777
--- Logistic Regression Classifier ---
Confusion Matrix:
[[16 0 0]
[ 0 17 1]
[ 0 0 11]]
Accuracy Score:0.9777777777777777
如您所见,每个不同分类器的输出完全相同。任何人能给我的任何帮助都将不胜感激。您的代码没有问题 在以下情况下,结果的相似性并非意外:
测试大小=0.20
,所有3个模型的准确度都将达到1.0
没什么好担心的。非常感谢您的回答以及与另一个问题的链接,这进一步帮助我理解了为什么会是这样。这是一个有趣的结果,我认为这是我程序中的一个错误。@georgeedwardshauv非常欢迎你;下面是关于NNs和Keras(这次有自己的答案)。