我已经在Jupyter Notebook(使用Anaconda)中以及在Pycharm中的单独文件中运行了我的代码,但是仍然,我使用(“线性”内核)的Logistic回归和支持向量机获得了相同的输出。
准确性,召回率,精度以及混淆矩阵都具有相同的输出。
在这两种情况下,ROC曲线都不同,AUC也不同。
最初,所有代码都在一个Jupyter Notebook中获得相同的输出,我将每种算法放在单独的笔记本中但得到了相同的结果。我将代码复制到Pycharm中的单独文件中,但仍得到相同的输出。两者的输出可以完全相同吗?
这是Logistic回归的代码:
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
X_train, X_test, Y_train, Y_test = train_test_split(X,Y,test_size=0.1,random_state=1)
lr = LogisticRegression(max_iter=1000)
lr.fit(X_train,Y_train)
Y_pred = lr.predict(X_test)
print("Accuracy:",metrics.accuracy_score(Y_test, Y_pred))
print("Precision:",metrics.precision_score(Y_test, Y_pred))
print("Recall:",metrics.recall_score(Y_test, Y_pred))
Y_pred_proba = lr.predict_proba(X_test)[::,1]
auc = metrics.roc_auc_score(Y_test, Y_pred_proba)
print("AUC:",auc)
及以下是SVM的代码
from sklearn.model_selection import train_test_split
from sklearn import svm
X_train, X_test, Y_train, Y_test = train_test_split(X,Y,test_size=0.1,random_state=1)
clf = svm.SVC(kernel='linear',probability=True)
clf.fit(X_train,Y_train)
Y_pred = clf.predict(X_test)
print("Accuracy:",metrics.accuracy_score(Y_test, Y_pred))
print("Precision:",metrics.precision_score(Y_test, Y_pred))
print("Recall:",metrics.recall_score(Y_test, Y_pred))
Y_pred_proba = clf.predict_proba(X_test)[::,1]
auc = metrics.roc_auc_score(Y_test, Y_pred_proba)
print("AUC:",auc)
以下是线性回归的输出
Accuracy: 0.8709677419354839
Precision: 0.8235294117647058
Recall: 0.9333333333333333
13 3 1 14
AUC: 0.9208333333333334
SVM的输出
Accuracy: 0.8709677419354839
Precision: 0.8235294117647058
Recall: 0.9333333333333333
13 3 1 14
AUC: 0.925
答案 0 :(得分:0)
我认为在两个不同的分类器上分数不可能完全相同
我从以下两点怀疑:
我相信这些观察可以为您提供帮助。