16.交叉验证
约 170 字小于 1 分钟
2025-09-20
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_splitiris = load_iris()
X = iris.data
y = iris.target
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)x_train.shape, y_train.shape, x_test.shape, y_test.shape运行结果
((120, 4), (120,), (30, 4), (30,))
from sklearn.model_selection import GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
params = {
'n_neighbors':[n for n in range(1, 20)],
'weights':['uniform', 'distance'],
'p':[p for p in range(1, 7)]
}
grid = GridSearchCV(estimator=KNeighborsClassifier(), param_grid=params, n_jobs=-1)
grid.fit(x_train,y_train)
# 这里的grid_search找到的最好的参数已经经过corss_val_score
grid.best_params_运行结果
{'n_neighbors': 5, 'p': 4, 'weights': 'uniform'} 交叉验证
from sklearn.model_selection import cross_val_score
neigh = KNeighborsClassifier()
# 这个方法将交叉验证和score放在一个方法中
cv_scores = cross_val_score(neigh,x_train,y_train,cv=5)
cv_scores运行结果
array([0.95833333, 0.95833333, 0.83333333, 1. , 0.95833333])
