0
点赞
收藏
分享

微信扫一扫

为classification problem选择适合的机器学习算法(模板)

谁知我新 2022-02-19 阅读 10

Compare Machine Learning Algorithms Consistently

数据集:diabetes.csv
参考书:《Machine Learning Mastery With Python Understand Your Data, Create Accurate Models and work Projects End-to-End》
获取链接:https://github.com/aoyinke/ML_learner

Attention

  1. 比较机器学习算法的关键在于,在同样的数据上用同样的方式进行测试
  2. 设置random_seed使得每次对于training set的划分都是一样的,且对于每一个算法的评估都是一样的
from pandas import read_csv
from matplotlib import pyplot
from sklearn.model_selection import KFold

from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
# load dataset
path = "/content/sample_data/diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = read_csv(path, names=names,skiprows=1)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
# prepare models
models = []
models.append(('LR', LogisticRegression()))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('NB', GaussianNB()))
models.append(('SVM', SVC()))
# evaluate each model in turn
results = []
names = []
scoring = 'accuracy'
for name, model in models:
	kfold = KFold(n_splits=10,shuffle=False)
	cv_results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
	results.append(cv_results)
	names.append(name)
	msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
	print(msg)
	
# boxplot algorithm comparison
fig = pyplot.figure()
fig.suptitle('Algorithm Comparison')
ax = fig.add_subplot(111)
pyplot.boxplot(results)
ax.set_xticklabels(names)
pyplot.show()

# LR: 0.769515 (0.048411)
# LDA: 0.773462 (0.051592)
# KNN: 0.726555 (0.061821)
# CART: 0.695232 (0.062517)
# NB: 0.755178 (0.042766)
# SVM: 0.651025 (0.072141)

请添加图片描述
Summary:可以看出,Logistic Regression和Linear Discriminant Analysis(LDA)是两个值得进一步研究的算法

举报

相关推荐

0 条评论