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