Python 机器学习实战 —— 监督学习(下)
前言
近年来AI人工智能成为社会发展趋势,在IT行业引起一波热潮,有关机器学习、深度学习、神经网络等文章多不胜数。从智能家居、自动驾驶、无人机、智能机器人到人造卫星、安防军备,无论是国家级军事设备还是广泛的民用设施,都充斥着AI应用的身影。接下来的一系列文章将会由浅入深从不同角度分别介绍机器学习、深度学习之间的关系与区别,通过一系统的常用案例讲述它们的应用场景。
在上一篇文章《 Python 机器学习实战 —— 监督学习(上)》中已经讲述了机械学习的相关概念与基础知识,监督学习的主要流程。对损失函数进行了基础的介绍,并对常用的均方误差与递度下降法的计算过程进行演示,并对常用的 LogisticRegression , LinearSVC、SGDClassifier、 LinearRegression、Ridge、Lasso 、SGDRegressor 等线性模型进行了介绍,讲解了非线性 PolynomialFeatures 多项式转换器以及管道 Pipe 的基本用法。
本文将介绍支持向量机、k近邻、朴素贝叶斯分类 、决策树、决策树集成等模型的应用。
目录
一、浅谈机器学习
二、基本概念
三、常用方法介绍
四、线性模型
五、支持向量机
六、k近邻
七、朴素贝叶斯分类器
八、决策树与决策树集成
五、支持向量机
支持向量机(Support Vector Machine,SVM)是一个功能强大的模型,它概支持线性分类和非线性分类(SVC),也支持回归(SVR),是机器学习中最常用的模型之一。回顾上一章节《 Python 机器学习实战 —— 监督学习(上)》所介绍的 LinearSVC 线性支持向量机就是属于 SVC 的一种,可把它看作是 SVC 的一个特殊类型。
5.1 SVM 的由来
回顾在上一章节介绍 LogisticRegression 线性分类模型,可以知道在同一组二分类数据当中,有不止一条的直线可以把它们完美地分割,从中很难判断哪一条分割线能更好地让新的数据点分配到正确的标签。
1 def logistic(c=1.0): 2 #生成数据集 3 X,y=datasets.make_forge() 4 X_train,X_test,y_train,y_test=train_test_split(X,y) 5 #对Logistic模型进行训练 6 logistic=LogisticRegression(C=c,random_state=1) 7 logistic.fit(X_train,y_train) 8 #输入正确率 9 print("logistic train data:{0}".format(logistic.score(X_train,y_train))) 10 print(" test data:{0}".format(logistic.score(X_test,y_test))) 11 #输出模型点 12 plt.scatter(X[:,0], X[:,1],c=y,s=100) 13 plt.legend(["model","data"]) 14 #输出模型决策边界 15 line = np.linspace(7, 13, 100) 16 y=(-logistic.coef_[0][0]*line-logistic.intercept_)/logistic.coef_[0][1] 17 plt.plot(line,y,"-") 18 19 logistic(1) 20 logistic(2) 21 logistic(3) 22 plt.show()