有人可以解释为什么 KFold 不承认我在这个 for 循环中对模型的定义吗?

1 python pandas scikit-learn train-test-split

我正在尝试比较不同的算法,看看哪种算法最适合我的问题。

我直接尝试本教程中的代码:https ://machinelearningmastery.com/machine-learning-in-python-step-by-step/

特别是在下面的代码中:

我的进口

import sys
import pandas as pd
import scipy as sp
import sklearn as sk
import numpy as np
import matplotlib.pyplot as plt
from pandas.plotting import scatter_matrix

from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold

from sklearn.linear_model import LogisticRegression
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
Run Code Online (Sandbox Code Playgroud)

抽查算法

import sys
import pandas as pd
import scipy as sp
import sklearn as sk
import numpy as np
import matplotlib.pyplot as plt
from pandas.plotting import scatter_matrix

from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold

from sklearn.linear_model import LogisticRegression
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
Run Code Online (Sandbox Code Playgroud)

依次评估每个模型

models = []
models.append(('LR', LogisticRegression(solver='liblinear', multi_class='ovr')))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('NB', GaussianNB()))
models.append(('SVM', SVC(gamma='auto')))
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我不断得到(<----第12行):

results = []
names = []
for name, model in models:
    kfold = model_selection.KFold(n_splits=10, random_state=seed)
    cv_results = model_selection.cross_val_score(model, X_train, Y_train, cv=kfold, scoring=scoring)
    results.append(cv_results)
    names.append(name)
    msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
    print(msg)
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释 KFold 的具体工作原理以及为什么它不接受该实例吗?

raf*_*elc 5

KFoldsklearn.model_selection模块的一部分。

确保将名称导入到您的工作区中,方法是:

from sklearn import model_selection   
Run Code Online (Sandbox Code Playgroud)

并使用

model_selection.KFold
Run Code Online (Sandbox Code Playgroud)

或者

import sklearn.model_selection
sklearn.model_selection.KFold
Run Code Online (Sandbox Code Playgroud)

甚至

from sklearn.model_selection import KFold
KFold
Run Code Online (Sandbox Code Playgroud)