分类报告随 运行 变化
Classification report changes with each run
我使用下面的代码得到分类模型的confusion matrix
和classification report
,但是结果随着每个运行而变化!为什么会发生这种情况,我该如何解决?
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))
您需要为 train_test_split
设置 random_states
。如果不设置它,每个 运行 都会获得不同的随机状态。导致不同的火车测试拆分。因此导致您的分类器输入不同,这可能(并且在您的情况下)导致结果不同。
例如,如果您将 random_state 设置为固定值,您将在 运行 之间得到相同的结果,因此更改为这行代码。您设置 random_state
的精确值无关紧要,只要它在 运行 之间相同即可。
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
,因此它不会影响您的情况。
我使用下面的代码得到分类模型的confusion matrix
和classification report
,但是结果随着每个运行而变化!为什么会发生这种情况,我该如何解决?
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))
您需要为 train_test_split
设置 random_states
。如果不设置它,每个 运行 都会获得不同的随机状态。导致不同的火车测试拆分。因此导致您的分类器输入不同,这可能(并且在您的情况下)导致结果不同。
例如,如果您将 random_state 设置为固定值,您将在 运行 之间得到相同的结果,因此更改为这行代码。您设置 random_state
的精确值无关紧要,只要它在 运行 之间相同即可。
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
,因此它不会影响您的情况。