在scikit-learn中提供了一个KNeighborsClassifier类来实现k近邻法分类模型,一个KNeighborsRegressor类来实k近邻法回归模型。
KNeighborsClassifier是分类模型,其原型为
class sklearn.neighbors.KNeighborsRegressor(n_neighbors=5, *,
weights='uniform', algorithm='auto', leaf_size=30, p=2,
metric='minkowski', metric_params=None, n_jobs=None, **kwargs)
参数
❐ n_neighbors:一个整数,指定k值,默认为5
❐ weights:一字符串或者可调用对象,指定投票权重策略。即这些邻居的投票权可以为相同或者不同。
❐ algorithm:一字符串,指定计算最近邻的算法,默认为’auto’。
❐ leaf_size:一个整数,指定BallTree或者 KDTree叶结点规模。它影响了树的构建和查询速度,默认为30。
❐ p:一个整数,指定在’Minkowski’度量上的指数,默认为2。如果 p=1,对应于曼哈顿距离;p=2对应于欧拉距离。
❐ metric:一个字符串,指定距离度量。默认为’minkowski’距离。
❐ n_jobs:并行性。默认为-11表示派发任务到所有计算机的CPU上。
实例方法
❐ fit(X,y):训练模型。
❐ get_params(deep=True):获取模型参数信息。
❐ kneighbors([X, n_neighbors, return_distance]):返回样本点的 k近邻点。如果return_distance=True,同时还返回到这些近邻点的距离。
❐ kneighbors_graph([X, n_neighbors, mode]):返回样本点的 k近邻点的连接图。
❐ predict(X):用模型进行预测,返回预测值。
❐ score(X, y[, sample_weight]):返回模型的预测性能得分。
❐ set_params(**params):设置模型参数。
示例
from sklearn import neighbors,datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
digits = datasets.load_digits()
train,target = digits.data,digits.target
X_train,X_test,y_train,y_test = train_test_split(train,target,test_size=0.3,random_state=0)
knnclf = KNeighborsClassifier(n_neighbors=3)
knnclf.fit(X_train,y_train)
print('Training Score:%f'%knnclf.score(X_train,y_train))
print('Testing Score:%f'%knnclf.score(X_test,y_test))
KNeighborsRegressor是回归模型,其原型为:
class sklearn.neighbors.KNeighborsRegressor(n_neighbors=5, *,
weights='uniform', algorithm='auto', leaf_size=30, p=2,
metric='minkowski', metric_params=None, n_jobs=None, **kwargs)
参数
❐ n_neighbors:一个整数,指定k值,默认为5
❐ weights:一字符串或者可调用对象,指定投票权重策略。即这些邻居的投票权可以为相同或者不同。
❐ algorithm:一字符串,指定计算最近邻的算法,默认为’auto’。
❐ leaf_size:一个整数,指定BallTree或者 KDTree叶结点规模。它影响了树的构建和查询速度,默认为30。
❐ p:一个整数,指定在’Minkowski’度量上的指数,默认为2。如果 p=1,对应于曼哈顿距离;p=2对应于欧拉距离。
❐ metric:一个字符串,指定距离度量。默认为’minkowski’距离。
❐ n_jobs:并行性。默认为-11表示派发任务到所有计算机的CPU上。
实例方法
❐ fit(X,y):训练模型。
❐ get_params(deep=True):获取模型参数信息。
❐ kneighbors([X, n_neighbors, return_distance]):返回样本点的 k近邻点。如果return_distance=True,同时还返回到这些近邻点的距离。
❐ kneighbors_graph([X, n_neighbors, mode]):返回样本点的 k近邻点的连接图。
❐ predict(X):用模型进行预测,返回预测值。
❐ score(X, y[, sample_weight]):返回模型的预测性能得分,评分使用 R 2 R^{2} R2。
❐ set_params(**params):设置模型参数。
示例
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsRegressor
X, y = load_boston(return_X_y=True)
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=0)
knnrg = KNeighborsRegressor(n_neighbors=3)
knnrg.fit(X_train,y_train)
print('Training Score:%f'%knnrg.score(X_train,y_train))
print('Testing Score:%f'%knnrg.score(X_test,y_test))
k近邻的分类和回归算法其参数意义和实例方法几乎完全相同,两者的区别在于回归分析和分类决策的不同:
❐KNeighborsClassifier将待预测样本点最近邻的k个训练样本点中出现次数最多的那一类作为待预测样本点的分类。
❐KNeighborsRegressor将待预测样本点最近邻的k个训练样本点的平均值作为待预测样本点的值。