当前位置: 首页 > 编程笔记 >

scikit-learn 使用交叉验证训练分类器

宇文峰
2023-03-14
本文向大家介绍scikit-learn 使用交叉验证训练分类器,包括了scikit-learn 使用交叉验证训练分类器的使用技巧和注意事项,需要的朋友参考一下

html" target="_blank">示例

使用虹膜数据集:

import sklearn.datasets
iris_dataset = sklearn.datasets.load_iris()
X, y = iris_dataset['data'], iris_dataset['target']

数据分为训练集和测试集。要做到这一点,我们使用train_test_split效用函数来分割双方X和y(数据和目标矢量)用随机选择train_size=0.75(训练集包含数据的75%)。

训练数据集被输入到k最近邻分类器中。fit分类器的方法将使模型适合数据。

fromsklearn.cross_validationimport train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.75) 
fromsklearn.neighborsimport KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors=3)
clf.fit(X_train, y_train)

最终预测测试样品的质量:

clf.score(X_test, y_test) # Output: 0.94736842105263153

通过使用一对训练集和测试集,由于数据拆分的任意选择,我们可能会得到分类器质量的偏差估计。通过使用交叉验证,我们可以将分类器拟合到数据的不同训练/测试子集中,并对所有准确性结果进行平均。该函数cross_val_score使用交叉验证使分类器适合输入数据。它可以将要使用的不同分割数(折叠数)作为输入(在下面的示例中为5)。

fromsklearn.cross_validationimport cross_val_score
scores = cross_val_score(clf, X, y, cv=5)
print(scores)
# Output: array([ 0.96666667,  0.96666667,  0.93333333,  0.96666667,  1.        ])
print "Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() / 2)
# Output: Accuracy: 0.97 (+/- 0.03)
           

 类似资料:
  • 问题内容: 我需要将数据分为训练集(75%)和测试集(25%)。我目前使用以下代码进行操作: 但是,我想对训练数据集进行分层。我怎么做?我一直在研究该方法,但不允许我指定75%/ 25%的划分,而是仅对训练数据集进行分层。 问题答案: [更新为0.17] 请参阅以下文档: [/更新为0.17] 有一个拉要求在这里。但是,您可以根据需要简单地进行 训练和测试索引的使用。

  • 问题内容: 当我将以下代码与大小为(952,144)的数据矩阵和大小为(952)的输出向量一起使用时,度量标准将返回负值,这是意外的。你有什么主意吗? 则所有值均为负。 问题答案: 试图解决这一问题,因此请提供David和larsmans在评论部分雄辩地描述的答案: 是的,这应该发生。实际的MSE只是您获得的号码的肯定版本。 统一评分API始终使得分最大化,因此为了使统一评分API正常工作,否定了

  • 问题内容: 是否可以在没有交叉验证的情况下使用GridSearchCV?我正在尝试通过网格搜索优化KMeans聚类中的聚类数量,因此我不需要或想要交叉验证。 该文档也使我感到困惑,因为在fit()方法下,它有一个用于非监督学习的选项(例如,将None用于非监督学习)。但是,如果您想进行无监督学习,则需要在没有交叉验证的情况下进行学习,而且似乎没有摆脱交叉验证的选择。 问题答案: 经过大量搜索,我能

  • 1)在我读过的大多数机器学习入门页面中,似乎都在说你需要一个训练集、一个验证集和一个测试集。根据我的理解,交叉验证允许你结合训练和验证集来训练模型,然后你应该在测试集上测试它以得到一个分数。然而,我在论文中看到,在很多情况下,您可以在整个数据集上交叉验证,然后报告CV得分作为准确性。我知道在一个理想的世界里,你会想要在不同的数据上进行测试,但如果这是合法的,我想要在我的整个数据集上交叉验证并报告那

  • *种子为重复性设置为123,我运行的是3.63 R。

  • K-means k是一个超参数,表示要聚类成多少类。K-means计算方法是重复移动类的重心,以实现成本函数最小化,成本函数为: 其中μk是第k类的重心位置 试验 构造一些样本用户试验,如下: # coding:utf-8 import sys reload(sys) sys.setdefaultencoding( "utf-8" ) import matplotlib.pyplot as pl