【机器学习】分类算法 - KNN算法(K-近邻算法)KNeighborsClassifier(1)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

iris = datasets.load_iris()

print(iris.data)


输出:



[[5.1 3.5 1.4 0.2]
[4.9 3. 1.4 0.2]
[4.7 3.2 1.3 0.2]


从打印的数据集可以看到,鸢尾花数据集有4个「属性」,这里解释一下属性的含义


* sepal length:萼片长度(厘米)
* sepal width:萼片宽度(厘米)
* petal length:花瓣长度(厘米)
* petal width:花瓣宽度(厘米)


### 3.2、划分数据集


接下来对鸢尾花的特征值(iris.data)和目标值(iris.target)进行「划分」,测试集为60%,训练集为40%。



from sklearn import datasets
from sklearn import model_selection

1、获取数据集

iris = datasets.load_iris()

2、划分数据集

x_train, x_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target, random_state=6)
print(‘训练集特征值:’, len(x_train))
print(‘测试集特征值:’,len(x_test))
print(‘训练集目标值:’,len(y_train))
print(‘测试集目标值:’,len(y_test))


输出:



训练集特征值: 112
测试集特征值: 38
训练集目标值: 112
测试集目标值: 38


从打印结果可以看到,测试集的样本数是38,训练集的样本数是112,划分比例符合预期。


  

### 3.3、特征标准化


接下来,对训练集和测试集的特征值进行「标准化」处理(训练集和测试集所做的处理必须完全「相同」)。



from sklearn import datasets
from sklearn import model_selection
from sklearn import preprocessing

1、获取数据集

iris = datasets.load_iris()

2、划分数据集

x_train:训练集特征,x_test:测试集特征,y_train:训练集目标,y_test:测试集目标

x_train, x_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target, random_state=6)

3、特征标准化

ss = preprocessing.StandardScaler()
x_train = ss.fit_transform(x_train)
x_test = ss.fit_transform(x_test)
print(x_train)


输出:



[[-0.18295405 -0.192639 0.25280554 -0.00578113]
[-1.02176094 0.51091214 -1.32647368 -1.30075363]
[-0.90193138 0.97994624 -1.32647368 -1.17125638]


从打印结果可以看到,特征值发生了相应的变化。


  

### 3.4、KNN处理并评估


接下来,将训练集特征 和 训练集目标 传给 KNN,然后评估处理结果的「准确率」。



from sklearn import datasets
from sklearn import model_selection
from sklearn import preprocessing
from sklearn import neighbors

1、获取数据集

iris = datasets.load_iris()

2、划分数据集

x_train:训练集特征,x_test:测试集特征,y_train:训练集目标,y_test:测试集目标

x_train, x_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target, random_state=6)

3、特征标准化

ss = preprocessing.StandardScaler()
x_train = ss.fit_transform(x_train)
x_test = ss.fit_transform(x_test)

4、KNN算法处理

knn = neighbors.KNeighborsClassifier(n_neighbors=2)
knn.fit(x_train, y_train)

5、评估结果

y_predict = knn.predict(x_test)
print(‘真实值和预测值对比:’, y_predict == y_test)
score = knn.score(x_test, y_test)
print(‘准确率:’, score)


输出:



真实值和预测值对比: [ True True True True True True False True True True False True
True True True False True True True True True True True True
True True True True True True True True True True False True
True True]
准确率: 0.8947368421052632


从输出结果可以很容易看出,准确率是89%;真实值和预测值对比的结果中,True越多,表示准确率越高。





![img](https://img-blog.csdnimg.cn/img_convert/9644f0184100c982be35e2031321baab.png)
![img](https://img-blog.csdnimg.cn/img_convert/092bfac56321491aaeeaaae0311e13b3.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 14
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值