【机器学习】分类算法总结 | LDA | logistic回归 | KNN | CART | 贝叶斯 | SVM

参考教材:《机器学习python实践》

一、主要分类算法总结

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、LDA

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from pandas.plotting import scatter_matrix
file_name='E:/数学建模2022/算法/分类算法/iris.csv'
names=['separ-length','separ-width','petal_length','petal_width','class']
f=open(file_name)#因为中文要报错,所以多了这么一个步骤
data=pd.read_csv(f,names=names)
array=data.values #从dataframe数据格式转为矩阵格式,重要的一步
X=array[:,:4] #输入特征
Y=array[:,4] #标签label

seed=7
num_folds=10 #通常取3,5,10,不知道设置为多少时,设为10
#K折交叉验证分离的核心函数
kfold=KFold(n_splits=num_folds,random_state=seed,shuffle=True) #n_splits这里指要分成多少块
model=LinearDiscriminantAnalysis() #选择模型
result=cross_val_score(model,X,Y,cv=kfold,scoring='accuracy')#交叉验证的函数,scoring默认为精度,也可以修改为其他的


print('每一折的精度如下')
print(result)
print('评估结果(平均精度)如下:{}'.format(result.mean()))
print('评估结果(标准方差)如下:{}'.format(result.std()))


三、逻辑回归

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from pandas.plotting import scatter_matrix
file_name='E:/数学建模2022/算法/分类算法/iris.csv'
names=['separ-length','separ-width','petal_length','petal_width','class']
f=open(file_name)#因为中文要报错,所以多了这么一个步骤
data=pd.read_csv(f,names=names)
array=data.values #从dataframe数据格式转为矩阵格式,重要的一步
X=array[:,:4] #输入特征
Y=array[:,4] #标签label

seed=7
num_folds=10 #通常取3,5,10,不知道设置为多少时,设为10
#K折交叉验证分离的核心函数
kfold=KFold(n_splits=num_folds,random_state=seed,shuffle=True) #n_splits这里指要分成多少块
model=LogisticRegression() #选择模型
result=cross_val_score(model,X,Y,cv=kfold,scoring='accuracy')#交叉验证的函数,scoring默认为精度,也可以修改为其他的


print('每一折的精度如下')
print(result)
print('评估结果(平均精度)如下:{}'.format(result.mean()))
print('评估结果(标准方差)如下:{}'.format(result.std()))


四、KNN

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from pandas.plotting import scatter_matrix
file_name='E:/数学建模2022/算法/分类算法/iris.csv'
names=['separ-length','separ-width','petal_length','petal_width','class']
f=open(file_name)#因为中文要报错,所以多了这么一个步骤
data=pd.read_csv(f,names=names)
array=data.values #从dataframe数据格式转为矩阵格式,重要的一步
X=array[:,:4] #输入特征
Y=array[:,4] #标签label

seed=7
num_folds=10 #通常取3,5,10,不知道设置为多少时,设为10
#K折交叉验证分离的核心函数
kfold=KFold(n_splits=num_folds,random_state=seed,shuffle=True) #n_splits这里指要分成多少块
model=KNeighborsClassifier() #选择模型
result=cross_val_score(model,X,Y,cv=kfold,scoring='accuracy')#交叉验证的函数,scoring默认为精度,也可以修改为其他的


print('每一折的精度如下')
print(result)
print('评估结果(平均精度)如下:{}'.format(result.mean()))
print('评估结果(标准方差)如下:{}'.format(result.std()))

五、贝叶斯

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from pandas.plotting import scatter_matrix
file_name='E:/数学建模2022/算法/分类算法/iris.csv'
names=['separ-length','separ-width','petal_length','petal_width','class']
f=open(file_name)#因为中文要报错,所以多了这么一个步骤
data=pd.read_csv(f,names=names)
array=data.values #从dataframe数据格式转为矩阵格式,重要的一步
X=array[:,:4] #输入特征
Y=array[:,4] #标签label

seed=7
num_folds=10 #通常取3,5,10,不知道设置为多少时,设为10
#K折交叉验证分离的核心函数
kfold=KFold(n_splits=num_folds,random_state=seed,shuffle=True) #n_splits这里指要分成多少块
model=GaussianNB() #选择模型
result=cross_val_score(model,X,Y,cv=kfold,scoring='accuracy')#交叉验证的函数,scoring默认为精度,也可以修改为其他的


print('每一折的精度如下')
print(result)
print('评估结果(平均精度)如下:{}'.format(result.mean()))
print('评估结果(标准方差)如下:{}'.format(result.std()))


六、CART

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from pandas.plotting import scatter_matrix
file_name='E:/数学建模2022/算法/分类算法/iris.csv'
names=['separ-length','separ-width','petal_length','petal_width','class']
f=open(file_name)#因为中文要报错,所以多了这么一个步骤
data=pd.read_csv(f,names=names)
array=data.values #从dataframe数据格式转为矩阵格式,重要的一步
X=array[:,:4] #输入特征
Y=array[:,4] #标签label

seed=7
num_folds=10 #通常取3,5,10,不知道设置为多少时,设为10
#K折交叉验证分离的核心函数
kfold=KFold(n_splits=num_folds,random_state=seed,shuffle=True) #n_splits这里指要分成多少块
model=DecisionTreeClassifier() #选择模型
result=cross_val_score(model,X,Y,cv=kfold,scoring='accuracy')#交叉验证的函数,scoring默认为精度,也可以修改为其他的


print('每一折的精度如下')
print(result)
print('评估结果(平均精度)如下:{}'.format(result.mean()))
print('评估结果(标准方差)如下:{}'.format(result.std()))



七、支持向量机

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from pandas.plotting import scatter_matrix
file_name='E:/数学建模2022/算法/分类算法/iris.csv'
names=['separ-length','separ-width','petal_length','petal_width','class']
f=open(file_name)#因为中文要报错,所以多了这么一个步骤
data=pd.read_csv(f,names=names)
array=data.values #从dataframe数据格式转为矩阵格式,重要的一步
X=array[:,:4] #输入特征
Y=array[:,4] #标签label

seed=7
num_folds=10 #通常取3,5,10,不知道设置为多少时,设为10
#K折交叉验证分离的核心函数
kfold=KFold(n_splits=num_folds,random_state=seed,shuffle=True) #n_splits这里指要分成多少块
model=SVC() #选择模型
result=cross_val_score(model,X,Y,cv=kfold,scoring='accuracy')#交叉验证的函数,scoring默认为精度,也可以修改为其他的


print('每一折的精度如下')
print(result)
print('评估结果(平均精度)如下:{}'.format(result.mean()))
print('评估结果(标准方差)如下:{}'.format(result.std()))

八、总结

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
plt.rcParams['font.sans-serif']=['SimHei']#显示中文标签
plt.rcParams['axes.unicode_minus']=False

file_name='E:/数学建模2022/算法/分类算法/iris.csv'
names=['separ-length','separ-width','petal_length','petal_width','class']
f=open(file_name)#因为中文要报错,所以多了这么一个步骤
data=pd.read_csv(f,names=names)
array=data.values #从dataframe数据格式转为矩阵格式,重要的一步
X=array[:,:4] #输入特征
Y=array[:,4] #标签label

seed=7
num_folds=10 #通常取3,5,10,不知道设置为多少时,设为10
#K折交叉验证分离的核心函数
kfold=KFold(n_splits=num_folds,random_state=seed,shuffle=True) #n_splits这里指要分成多少块
models={}
models['LDA']=LinearDiscriminantAnalysis() #选择模型
models['LR']=LogisticRegression() #选择模型
models['KNN']=KNeighborsClassifier() #选择模型
models['NB']=GaussianNB() #选择模型
models['CART']=DecisionTreeClassifier() #选择模型
models['SVM']=SVC() #选择模型
results=[]
for name in models:
    result = cross_val_score(models[name], X, Y, cv=kfold, scoring='accuracy')  # 交叉验证的函数,scori
    results.append(result)
    print('{}的评估结果(平均精度)为:{},评估结果(标准方差)如下:{}'.format(name,result.mean(),result.std()),)
fig1=plt.figure()
ax=fig1.add_subplot(111)
plt.boxplot(results)
ax.set_xticklabels(models.keys())
plt.title('各个算法箱线图对比')
plt.show()



在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值