params = {'n_neighbors': range(1, 10)} mdl = KNeighborsClassifier() grid = GridSearchCV(mdl, param_grid=params) grid.fit(X, y) print('最优参数:', grid.best_params_) print('最优得分:', grid.best_score_) mdl = grid.best_estimator_ # 6.评估模型 y_pred = mdl.predict(X) displayClassifierMetrics(y, y_pred, mdl.classes_) y_prob = mdl.predict_proba(X) displayROCurve(y, y_prob, mdl.classes_) # 相关类 # KNeighborsClassifier(n_neighbors=5,weights=’uniform’,algorithm=’auto’, # leaf_size=30,p=2,metric=’minkowski’,metric_params=None,n_jobs=1,*kwargs) # n_neighbors: int, 可选参数(默认为 5) # weights(权重): str or callable(自定义类型), 可选参数(默认为 ‘uniform’) # 用于预测的权重函数。可选参数如下: # - ‘uniform’ : 统一的权重. 在每一个邻居区域里的点的权重都是一样的。 # - ‘distance’ : 权重点等于他们距离的倒数。使用此函数,更近的邻居对于所预测的点的影响更大。 # - [callable] : 一个用户自定义的方法,此方法接收一个距离的数组,然后返回一个相同形状并且包含权重的数组。 # algorithm(算法): {‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, 可选参数(默认为 'auto') # 计算最近邻居用的算法: # - ‘ball_tree’ 使用算法[BallTree],适合高维数据集 # - ‘kd_tree’ 使用算法[KDTree],适合低维数据集