文章目录

  • 一、引言
    • 鸢尾花数据集
  • 二、鸢尾花分类

一、引言

鸢尾花数据集为机器学习常用的数据集,今天,我们基于该数据集进行算法学习

鸢尾花数据集

鸢尾花数据集有3个类别,每个类别有50个样本,其中一个类别与另外两个线性可分,另外两个线性不可分
特征:

  • sepal_length花萼长度
  • speal_width花萼宽度
  • petal_length花瓣长度
  • petal_width花瓣宽度

标签

  • 0:'setosa’山鸢尾
  • 1:'versicolor’变色鸢尾花
  • 2:'virginica’维吉尼亚鸢尾花

二、鸢尾花分类

鸢尾花数据集——提取码:1234

# 鸢尾花数据分类-PCA主成分分析降维
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.patches as mpatches
import warnings
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PolynomialFeatures, StandardScaler
from sklearn.linear_model import LogisticRegressionCV
from sklearn.metrics import accuracy_score
np.random.seed(0)# 加载数据
def loaddata():columns = ['sepal_length', 'speal_width', 'petal_length', 'petal_width', 'type']data = pd.read_csv('data/iris.data', header=None, names=columns)# 将类别信息转化为数值信息data['type'] = pd.Categorical(data['type']).codesdata = data.valuesX = data[:, :-1]y = data[:, -1]return X, ydef plotPCA():# 将降维后的数据进行绘图mpl.rcParams['font.sans-serif'] = ['simHei']mpl.rcParams['axes.unicode_minus'] = Falsecm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])# 根据y自动选择颜色plt.scatter(X[:, 0], X[:, 1], c=np.array(y).squeeze(), cmap=cm_dark, marker='o')plt.grid(b=True, ls=':')plt.xlabel(u'组分1', fontsize=14)plt.ylabel(u'组分2', fontsize=14)plt.title('鸢尾花数据PCA降维', fontsize=18)plt.show()def plotDescionBoundary():fig = plt.figure(facecolor='w')fig.subplots()cm_light = mpl.colors.ListedColormap(['#77E0A0','#FF8080','#A0A0FF'])cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])# 伪彩图plt.pcolormesh(X1,X2,y_pred_show,cmap=cm_light)# 样本的显示plt.scatter(X[:,0],X[:,1],s=30,c=y,edgecolors='k',cmap=cm_dark)# 标签plt.xlabel('组分1',fontsize=15)plt.ylabel('组分2',fontsize=15)# 网格plt.grid(b=True,ls=':')patchs = [mpatches.Patch(color='#77E0A0', label='Iris-setosa'),mpatches.Patch(color='#FF8080', label='Iris-versicolor'),mpatches.Patch(color='#A0A0FF', label='Iris-virginica')]# 设置图例# fancybox=True:控制是否应在构成图例背景的FancyBboxPatch周围启用圆边# framealpha=0.8:控制图例框架的 Alpha 透明度# loc:图例所有figure位置plt.legend(handles=patchs, fancybox=True, framealpha=0.8, loc='lower right')# 标题plt.title(u'鸢尾花Logistic回归分类效果', fontsize=17)plt.show()if __name__ == '__main__':# 消除警告warnings.filterwarnings(action='ignore')# 设置显示宽度pd.set_option('display.width', 1000)# 加载数据X, y = loaddata()# 特征工程—— PCA降维# pca降维后在所有数据中所占比例,一般是80%pca = PCA(n_components=2, whiten=True, random_state=0)X = pca.fit_transform(X)print('各方向方差:', pca.explained_variance_)print('方差所占比例:', pca.explained_variance_ratio_)# PCA降维后进行绘图plotPCA()# 数据分割X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.7)# 逻辑回归模型model = Pipeline([('ploy', PolynomialFeatures(degree=2, include_bias=True)),('lgc', LogisticRegressionCV(Cs=np.logspace(-3, 4, 8), fit_intercept=False, cv=5))])model.fit(X_train, y_train)print('最佳参数为', model.get_params('lgc')['lgc'].C_)# 预测y_train_pred = model.predict(X_train)print('训练集的准确率为',accuracy_score(y_train_pred,y_train))y_test_pred = model.predict(X_test)print('测试集的准确率为',accuracy_score(y_test_pred,y_test))# 对得到的结果进行绘制# 横纵采样500个点N,M = 500,500X1_min,X1_max = min(X[:,0])-0.5,max(X[:,0])+0.5X2_min,X2_max = min(X[:,1])-0.5,max(X[:,1])+0.5# 生成等距数组t1 = np.linspace(X1_min,X1_max,N)t2 = np.linspace(X2_min,X2_max,M)# 生成网格采样点# meshgrid适用于生成网格型数据,接受两个一维数组,生成两个二维矩阵X1,X2 = np.meshgrid(t1,t2)# 生成测试点X_show = np.stack((X1.flat,X2.flat),axis=1)# 预测y_pred_show = model.predict(X_show)# 使之与输入的形状相同y_pred_show = y_pred_show.reshape(X1.shape)# 画决策边界图plotDescionBoundary()
各方向方差: [4.22484077 0.24224357]
方差所占比例: [0.92461621 0.05301557]
最佳参数为 [1. 1. 1.]
训练集的准确率为 0.9619047619047619
测试集的准确率为 0.9777777777777777

当degree=2时,

当degree=3时,

当degree=4时,

当做线性回归预测时,为了提高模型的泛化能力,经常采用多次线性函数来建立模型,次数越多,学习内容越多,但也容易造成过拟合。

2.2案例:鸢尾花分类——逻辑回归相关推荐

  1. python机器学习案例系列教程——逻辑分类/逻辑回归LR/一般线性回归(softmax回归)

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 线性函数.线性回归 参考:http://blog.csdn.net/luanpeng825485697/article/details ...

  2. 机器学习中二分类逻辑回归的学习笔记

    1 致谢 感谢 Andrew Ng的教导! 2 前言 逻辑回归是机器学习中很重要而且很基础的算法,它也代表了分类算法最基本的思想. 3 二分类逻辑回归逻辑回归算法 3.1 假设函数 假设函数的形式为: ...

  3. 吴恩达ex3_吴恩达机器学习 EX3 作业 第一部分多分类逻辑回归 手写数字

    1 多分类逻辑回归 逻辑回归主要用于分类,也可用于one-vs-all分类.如本练习中的数字分类,输入一个训练样本,输出结果可能为0-9共10个数字中的一个数字.一对多分类训练过程使用"一对 ...

  4. 多分类逻辑回归 MNLogit python

    多分类逻辑回归MNLogit 引言 实例及python实现 数据集 查看数据情况 Logistics回归 输出结果 模型评价 Precision.Recall.f1_score ROC曲线及AUC 混 ...

  5. 逻辑回归二分类算法python_多分类逻辑回归 (Multinomial Logistic Regression)

    前言 分类从结果的数量上可以简单的划分为: 二分类(Binary Classification) 多分类(Multinomial Classification). 其中二分类是最常见且使用最多的分类场 ...

  6. 【吴恩达】机器学习作业 ex3data1 -- 多分类逻辑回归(Python)

    一.前言 本次是多分类逻辑回归的代码,主题是让你预测5000个手写数字对应的真正数字,每张图片有400个特征值,可以用20*20的方阵表示出来,一共5000行数据,此次的数据集是.mat类型,和以往的 ...

  7. 二元logistic模型案例_二元逻辑回归的简介与操作演示

    二元逻辑回归介绍 定义 Logistic回归主要用于因变量为分类变量(如是否等)的回归分析,自变量可以为分类变量,也可以为连续变量.它可以从多个自变量中选出对因变量有影响的自变量,并可以给出预测公式用 ...

  8. 经典案例鸢尾花分类, 在Keras中使用sklearn调参

    数据集介绍 有5维数据:花萼长度,花萼宽度,花瓣长度,花瓣宽度,花的种类 花的种类 'setosa', 'versicolor', 'virginica' 算例 第一步.包导入 import nump ...

  9. 分类---逻辑回归(二分类)

    逻辑回归的基本原理:逻辑回归预测的是概率,需要求解的是如何选取参数c和b可以使得所有样本预测正确的可能性最大.逻辑回归算法需要找到分类概率P(y=1)与输入向量X的直接关系,然后通过比较概率值来判断类 ...

最新文章

  1. 简单了解SQL性能优化工具MySql Explain
  2. 硕士:论文提交和考试
  3. Hadoop DistCp工具简介及其参数
  4. html-简单验证、滑块、搜索框
  5. 【opencv学习】透视变换矩阵
  6. (转)Spring Boot(七):Mybatis 多数据源最简解决方案
  7. Hiberbate中的一对多关联查询
  8. RAC中参数文件的配置
  9. 修炼成QTP高手的十个步骤
  10. 两款JAVA大型OA自动化办公系统源码
  11. 深入浅出python中文版pdf-深入浅出Python 巴里著 中文 PDF版 [37M]
  12. 金山词霸2007两个小BUG
  13. 小程序的优势和劣势是什么?
  14. HTML5中多媒体标签之音频标签
  15. mysql中的广播是什么意思_Android中的广播、服务、数据库、通知、包等术语的原理和介绍(图解)...
  16. 数据分析-数据来源、字段类型、数据采集陷阱
  17. 1+xbim证书含金量_bim证书哪个含金量高
  18. Lesson28_网络编程
  19. WARNING: The directory ‘/home/xt/.cache/pip‘ or its parent directory is not owned or is not writable
  20. 小案例--封装jsonp

热门文章

  1. weblogic12C如何解决AdminServer.lok问题
  2. Socket高并发出现TIME_WAIT的原因以及解决办法
  3. matlab legend 太大,[转载]MATLAB中调整legend的大小位置
  4. (附源码)计算机毕业设计ssm高校篮球训练管理系统
  5. day4_shop程序
  6. Qt sqlite 使用备忘
  7. 利用可扩展样式表语言xsl显示xml文档
  8. linux一台主机部署多版本mysql_Linux---一台主机部署多版本mysql服务和mysql实例
  9. 获评中国教育照明25强,利尔达引领教育照明行业“智变”
  10. 关于作品著作权登记“实名认证”的常见问题,登记申请表填错之后如何修改?