首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分类报告每次运行时都会更改

分类报告每次运行时都会更改
EN

Stack Overflow用户
提问于 2020-10-29 02:38:45
回答 1查看 48关注 0票数 1

我使用下面的代码来获取分类模型的confusion matrixclassification report,但每次运行结果都会发生变化!为什么会发生这种情况,我该如何修复它?

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np
from sklearn.svm import SVC
from sklearn.metrics import classification_report, confusion_matrix

bankdata = pd.read_csv("bill_authentication.csv")

X = bankdata.drop('Class', axis=1)
y = bankdata['Class']

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20)

svclassifier = SVC(kernel='rbf')
svclassifier.fit(X_train, y_train)
y_pred = svclassifier.predict(X_test)

print(confusion_matrix(y_test,y_pred))
print(classification_report(y_test,y_pred))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-29 04:14:59

您需要为train_test_split设置random_states。如果不设置它,每次运行都会得到不同的随机状态。从而导致不同的列车测试分裂。从而导致分类器的不同输入,这可能(在您的情况下是)导致结果不同。

例如,如果您将random_state设置为固定值,您将在两次运行之间获得相同的结果,因此请更改为此行代码。您将random_state设置为的精确值并不重要,只要它在两次运行之间是相同的。

代码语言:javascript
运行
复制
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=1)

您也可以为SVC设置random_state,但这只在probability参数设置为True时起作用。默认情况下设置为False,因此不会影响您的大小写。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64579303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档