机器学习实践——KNN算法

机器学习实践——KNN算法

1、基本准备

1.1 sklearn.neighbors.KNeighborsClassifier类
1.1.1 基本参数说明
  1. n_neighbors: K近邻算法中的k值,默认值为5.
  2. weight:基于权重的KNN算法的权重计算方式,参数值包括1、‘uniform’,所有的节点的权重相同。2、‘distance’:按照距离来取权重值。3、[callable],用户自定义的权重计算方式。默认值为‘uniform’。
  3. ‘algorithm’:距离计算的算法方式,参数值包括:1、‘auto’:根据fit方法来自动选择合适的距离计算方式。2、‘ball_tree’:基于BallTree的距离计算方式。3、‘kd_tree’:基于KD树的距离计算方式。4、‘brute’:暴力搜索。默认值为‘auto’。
  4. ‘leaf_size’:在采用KD树和Ball树时指定叶子节点的大小。默认值30。
1.1.2 基本属性说明
  1. classes_:分类器已知的分类标签。
  2. effective_metric_ :使用的距离度量方式
1.1.3 基本方法说明
  1. fit(self,X,Y):参数X和Y表示输入的训练集和训练集对应的标签。
  2. get_params(self):获取分类器模型的参数。
  3. kneighbors() : 获取某一个点的相邻的K个节点。
  4. predict(self,X):对数据进行分类预测,X表示进行测试的数据。
  5. predict_proba(self,X):对数据属于某一个类的概率,X表示的进行预测的数据。
  6. score(self,X,Y):对于给定的两个数据集,返回数据的平均准确率。
  7. set_params(self,**params):设置分类器模型的参数。
1.1.4 基本使用
import numpy as np
from sklearn.neighbors import KNeighborsClassifier

X = np.array([[0], [1], [2], [3]])
Y = np.array([0,0,1,1])
neigh = KNeighborsClassifier(n_neighbors=3,weights='distance')
neigh.fit(X,Y)
print("the predict is {}".format(neigh.predict([[1.1]])))
print("the predict proa is {}".format(neigh.predict_proba([[0.9]])))
print("the predict kneightbors is :",neigh.kneighbors([[1.2]]))

输出为:

the predict is [0]
the predict proa is [[0.92436975 0.07563025]]
the predict kneightbors is : (array([[0.2, 0.8, 1.2]]), array([[1, 2, 0]], dtype=int64))
1.2 无监督的KNN算法 NearrestNeightbors类
1.2.1 基本参数说明
  1. n_neighbors: K近邻算法中的k值,默认值为5.
  2. radius:分类器半径,分类器在半径内的进行投票决定
    2、‘distance’:按照距离来取权重值。3、[callable],用户自定义的权重计算方式。默认值为‘uniform’。
  3. ‘algorithm’:距离计算的算法方式,参数值包括:1、‘auto’:根据fit方法来自动选择合适的距离计算方式。2、‘ball_tree’:基于BallTree的距离计算方式。3、‘kd_tree’:基于KD树的距离计算方式。4、‘brute’:暴力搜索的方式。默认值为‘auto’。
  4. ‘leaf_size’:在采用KD树和Ball树时指定叶子节点的大小。默认值30。
1.2.2 基本属性说明
  1. effective_metric_ :使用的距离度量方式
  2. effective_metric_params_:计算邻接的距离的度量的参数
1.2.3 基本方法说明
  1. fit(self,X,Y):参数X和Y表示输入的训练集和训练集对应的标签。
  2. get_params(self):获取分类器模型的参数。
  3. kneighbors(X) : 获取某一个点的相邻的K个节点。
  4. kneighbors_graph(X):获取某个节点的K邻居的加权图。
  5. radius_neightbors(X):给定半径内的邻居。
  6. radius_neightbors_graph(X):给定半径内邻居的加权图。
1.2.4 基本使用
import numpy
from sklearn.neighbors import NearestNeighbors

samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
neigh = NearestNeighbors(n_neighbors=2)
neigh.fit(samples)

print("the kneighbors is :")
print(neigh.kneighbors([[1.,1.,1.]]))
print("the kneighbors graph is :")
print(neigh.kneighbors_graph(([[1.,1.,1.]])))
print("the radius neighbors is :")
print(neigh.radius_neighbors([[1,1,1]]))
print("the radius neighbors graph is :")
print(neigh.radius_neighbors_graph([[1,1,1]]))

输出为:

the kneighbors is :
(array([[0.5, 1.5]]), array([[2, 1]], dtype=int64))
the kneighbors graph is :
  (0, 2)	1.0
  (0, 1)	1.0
the radius neighbors is :
(array([array([0.5])], dtype=object), array([array([2], dtype=int64)], dtype=object))
the radius neighbors graph is :
  (0, 2)	1.0
1.3 KNN回归KNeighborsRegressor类
1.3.1 基本参数说明
  1. n_neighbors: K近邻算法中的k值,默认值为5.
  2. weight:基于权重的KNN算法的权重计算方式,参数值包括1、‘uniform’,所有的节点的权重相同。2、‘distance’:按照距离来取权重值。3、[callable],用户自定义的权重计算方式。默认值为‘uniform’。
  3. ‘algorithm’:距离计算的算法方式,参数值包括:1、‘auto’:根据fit方法来自动选择合适的距离计算方式。2、‘ball_tree’:基于BallTree的距离计算方式。3、‘kd_tree’:基于KD树的距离计算方式。4、‘brute’:暴力搜索。默认值为‘auto’。
  4. ‘leaf_size’:在采用KD树和Ball树时指定叶子节点的大小。默认值30。
1.3.2 基本属性说明
  1. classes_:分类器已知的分类标签。
  2. effective_metric_ :使用的距离度量方式
1.3.3 基本方法说明
  1. fit(self,X,Y):参数X和Y表示输入的训练集和训练集对应的标签。
  2. get_params(self):获取分类器模型的参数。
  3. kneighbors() : 获取某一个点的相邻的K个节点。
  4. predict(self,X):对数据进行分类预测,X表示进行测试的数据。
  5. score(self,X,Y):对于给定的两个数据集,返回数据的平均准确率。
  6. set_params(self,**params):设置分类器模型的参数。

2、基于KNN的癌症分类任务

该任务采用了sklearn中自带的数据集,具体的代码如下:

import  numpy as np
from sklearn.neighbors import  KNeighborsClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import  train_test_split

cancer = load_breast_cancer()
X = cancer.data
Y = cancer.target
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.2)

clf = KNeighborsClassifier(n_neighbors=6,weights='distance')
clf.fit(X_train,Y_train)
train_score = clf.score(X_train,Y_train)
test_score = clf.score(X_test,Y_test)

print("the train accuracy {0}; the test accuracy {1} ".format(train_score,test_score))


输出为:

the train accuracy 1.0; the test accuracy 0.9473684210526315 

3、波士顿房价预测

import  numpy as np
from sklearn.neighbors import KNeighborsRegressor
from sklearn.model_selection import  train_test_split
from sklearn.datasets import load_boston

boston = load_boston()
X = boston.data
Y = boston.target
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.2)

clf = KNeighborsRegressor(n_neighbors=6,weights='distance')
clf.fit(X_train,Y_train)
Y_pre = clf.predict([X_test[0]])
train_score = clf.score(X_train,Y_train)
test_score = clf.score(X_test,Y_test)

print("the Y_pre is : ",Y_pre)
print("the train score :{0}; the test score :{1}".format(train_score,test_score))

输出:

the Y_pre is :  [11.0323127]
the train score :1.0; the test score :0.567833384377563
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值