机器学习之KNN算法,朴素贝叶斯,决策树,SVM算法比较

该博客通过代码展示了KNN、朴素贝叶斯、决策树和SVM四种机器学习算法在葡萄酒数据集上的应用。首先,定义并训练了四个分类器,然后评估了它们在训练集上的准确率。接着,使用二维图描绘了这些模型的决策边界,帮助理解模型的行为和性能。结果显示,不同模型在数据集上有不同的表现,适合不同的应用场景。
摘要由CSDN通过智能技术生成

KNN算法

knn = KNeighborsClassifier ( )

朴素贝叶斯

gnb = GaussianNB ( )

决策树

dtc = DecisionTreeClassifier ( )

SVM算法

svm = SVC ()

代码:

import numpy as np
import matplotlib.pyplot as plt
from itertools import product
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
# 加载数据
wine = datasets.load_wine ( )
x_train = wine.data [ : , [ 0 , 2 ] ]
y_train = wine.target
# 定义分类器对象,均使用默认参数
knn = KNeighborsClassifier ( )
gnb = GaussianNB ( )
dtc = DecisionTreeClassifier ( )
svm = SVC ()
# 训练分类器
knn.fit ( x_train , y_train )
gnb.fit ( x_train , y_train )
dtc.fit ( x_train , y_train )
svm.fit ( x_train , y_train )
# 测试并输出准确率
print ( 'KNN:' , knn.score ( x_train , y_train ))
print ( 'GaussianNB:' , gnb.score ( x_train , y_train ))
print ( 'Decision Tree:' , dtc.score ( x_train , y_train ))
print ( 'Support Vector Machine:' , svm.score ( x_train , y_train ))
# 获取测试点范围
x_min , x_max = x_train[:,0].min()-1 , x_train [:,0].max()+1
y_min , y_max = x_train [ : , 1 ].min ( ) - 1 , x_train [ : , 1 ].max ( ) + 1
# 生成测试点
xx , yy = np.meshgrid ( np.arange ( x_min , x_max , 0.1 ) , np.arange ( y_min , y_max , 0.1 ) )
# 设置子图
f , axe = plt.subplots ( 2 , 2 , sharex = 'col' , sharey = 'row' , figsize = ( 10 , 8 ) )
# 测试全部测试点并将分类结果作为颜色参数绘制结果图
for idx , clf , tt in zip ( product([0,1],[0,1]) , [ knn , gnb , dtc , svm] , [ 'KNN' , 'GaussianNB' , 'Decision Tree' , 'Support Vector Machine' ] ) :
    Z = clf.predict ( np.c_[ xx.ravel ( ) , yy.ravel ( ) ] )
    Z = Z.reshape ( xx.shape )
    axe [ idx [ 0 ] , idx [ 1 ] ].contourf ( xx , yy , Z , alpha = 0.4 )
    axe [ idx [ 0 ] , idx [ 1 ] ].scatter ( x_train [ : , 0 ] , x_train [ : , 1 ] , c = y_train , s = 20 , edgecolor = 'k' )
    axe [ idx [ 0 ] , idx [ 1 ] ].set_title ( tt )
plt.show()

结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南蓬幽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值