文章目录

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

一、引言

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

鸢尾花数据集

鸢尾花数据集有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. PyTorch 笔记(16)— torch.nn.Sequential、torch.nn.Linear、torch.nn.RelU
  2. ASP.NET小收集:IFrame使用
  3. 说说JSON和JSONP,也许你会豁然开朗
  4. (事件类型: 警告;事件代码:3005)的解惑
  5. [css] 举例说说你对white-space属性的理解
  6. Python爬虫之puppeteer之遇到的bug及解决方法
  7. 银行大数据新玩法,构建“一湖两库”金融数据湖
  8. 站立会议中发现的一些新问题
  9. 三个已存在15年的 Linux 内核漏洞
  10. python自动生成海报_因为懒,我用Python做了一个实验室的海报生成器
  11. 现阶段选择ArcMap还是ArcGIS Pro
  12. i春秋-CTF-web文件上传
  13. 硬件设计4---什么是电感磁珠?
  14. 1.JS高级红宝书程序设计之JS的嵌入方式
  15. Windows下免安装MySQL开机启动
  16. 06-播放器-搭建媒体服务器测试videojs
  17. PS轻松制作GIF动态图
  18. MySQL事务--基础(课堂笔记)
  19. python 继承多个父类_python多继承及父类出现同名方法的处理
  20. Python:REfO 库的使用

热门文章

  1. 无组件架构:你不需要知道的“新一代”前端架构模式
  2. Windows10黑色背景下看不清鼠标光标问题的解决
  3. 大型HR源代码人力资源管理(源码100%)
  4. 任务栏位置(上下左右)获取
  5. SAM BAM 和 CRAM
  6. GJB 软件研制总结报告(模板)
  7. 关于大学生创新创业训练项目
  8. GEE_API Docs_Tutorials_1.编程基础和Earth Engine API入门
  9. 面试相关材料--开放性问题回答和行为事件访谈型面试问题回答示例
  10. 【汇正财经】有色:全球钼价轮番拉涨,小市场或有大行情