KNN算法

14 篇文章 1 订阅
6 篇文章 0 订阅

KNN:近朱者赤,近墨者黑,既可以用于分类,也可以用于回归分析。

K:一般可以通过交叉验证来确定

推荐系统算法:TD-IDF,协同过滤,Apriori 算法,在样本量比较少的情况下可以使用KNN做推荐算法

计算距离的方法:欧式距离,曼哈顿距离,闵科夫斯基距离,切比雪夫距离,余弦距离(用于兴趣推荐)

运用sklearn自带用的数据集——手写字识别实战练习

# -*- coding: utf-8 -*-
"""
Created on Fri May 10 17:14:50 2019

@author: Administrator
"""

from sklearn.datasets import load_digits
digits=load_digits()
data=digits.data
print(data.shape)  #(1797,64)

#查看第一幅图像8*8
print((digits.images[0]).shape)
#第一幅图像代表的数字含义
print(digits.target[0])

import matplotlib.pyplot as plt 
plt.gray()
#显示第一幅图
plt.imshow(digits.images[0])
plt.show()


from sklearn.model_selection import train_test_split

#分隔数据,将25% 的数据作为测试集
train_x,test_x,train_y,test_y=train_test_split(data,digits.target,test_size=0.33)


#采用Z-Score 规范
from sklearn import preprocessing
ss=preprocessing.StandardScaler()
train_ss_x=ss.fit_transform(train_x)
test_ss_x=ss.transform(test_x)


#创建KNN分类器
from sklearn.neighbors import KNeighborsClassifier

knn=KNeighborsClassifier()
#训练分类器
knn.fit(train_ss_x,train_y)


#进行预测
predict_y=knn.predict(test_ss_x)
 
from sklearn.metrics import accuracy_score

score=accuracy_score(predict_y,test_y)
print('knn分类器的准确率 %.4lf' % score)

 #svm 分类器进行预测

from  sklearn.svm import SVC
#创建分类器
svm=SVC()
#训练分类器
svm.fit(train_ss_x,train_y)

#进行预测
predict_y=svm.predict(test_ss_x)
print('svm 训练的准确率 %.4lf' % accuracy_score(predict_y,test_y))



#朴素贝叶斯
from sklearn.naive_bayes import MultinomialNB


#采用max_min 规范
from sklearn import preprocessing
mm=preprocessing.MinMaxScaler()
train_ss_x=mm.fit_transform(train_x)
test_ss_x=mm.transform(test_x)

nb=MultinomialNB()
nb.fit(train_ss_x,train_y)

predict_y=nb.predict(test_ss_x)
print('多项式nb 训练的准确率 %.4lf' % accuracy_score(predict_y,test_y))


#决策树
from sklearn.tree import DecisionTreeClassifier


dlf=DecisionTreeClassifier()

dlf.fit(train_ss_x,train_y)

predict_y=dlf.predict(test_ss_x)
print('决策树 训练的准确率 %.4lf' % accuracy_score(predict_y,test_y))

运行结果:

(1797, 64)
(8, 8)
0


knn分类器的准确率 0.9764
svm 训练的准确率 0.9832
多项式nb 训练的准确率 0.8805
决策树 训练的准确率 0.8418

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值