生信机器学习入门3 - Scikit-Learn训练机器学习分类感知器

news2024/11/14 22:07:03

1. 在线读取iris数据集

import os
import pandas as pd

# 下载
try:
    s = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
    print('From URL:', s)
    df = pd.read_csv(s,header=None,encoding='utf-8')
    
except HTTPError:
    s = 'iris.data'
    # 读取.data文件,不读取列名
    df = pd.read_csv(s,header=None, encoding='utf-8')
    
df.tail()

2. 加载 Iris 数据集

从 scikit-learn 加载 Iris 数据集,第三列代表花瓣的长度,第四列代表花瓣的宽度。物种分类已经转换为整数标签,其中0 = Iris-Setosa,1 = Iris-Versicolor,2 = Iris-Virginia

# jupyter
%matplotlib inline
from sklearn import datasets
import numpy as np

iris = datasets.load_iris()
# 提取dataframe的第3列和第4列数据
X = iris.data[:, [2, 3]]
# 分类标签
y = iris.target

# 打印分类标签
print('Class labels:', np.unique(y))
# Class labels: [0 1 2]

3. 划分 Iris 数据集

将70%数据划分为 的训练集和30% 为测试集。

from sklearn.model_selection import train_test_split
# X_train, y_train为训练集数据和标签
# X_test, y_test为测试集数据和标签
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=1, stratify=y)

# 打印各标签的数据包含的数据数量
print('Labels counts in y:', np.bincount(y))
print('Labels counts in y_train:', np.bincount(y_train))
print('Labels counts in y_test:', np.bincount(y_test))
# Labels counts in y: [50 50 50]
# Labels counts in y_train: [35 35 35]
# Labels counts in y_test: [15 15 15]

4. 标准化特征

from sklearn.preprocessing import StandardScaler

sc = StandardScaler()
sc.fit(X_train)
# 标准化训练数据X_train_std , X_test_std 
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)

5. 通过scikit-learn训练感知器

学习速率 (learning rate): 在训练模型时用于梯度下降的一个变量。在每次迭代期间,梯度下降法都会将学习速率与梯度相乘,得出的乘积称为梯度步长,设置数据在在0-1之间

from sklearn.linear_model import Perceptron

# eta0为学习率
# random_state随机生成器加权数值
ppn = Perceptron(eta0=0.1, random_state=1)
ppn.fit(X_train_std, y_train)
# Perceptron(eta0=0.1, random_state=1)

# 打印测试数据集分类错误数量
y_pred = ppn.predict(X_test_std)
print('Misclassified examples: %d' % (y_test != y_pred).sum())
# Misclassified examples: 1

# 获取感知器准确度
from sklearn.metrics import accuracy_score
print('Accuracy: %.3f' % accuracy_score(y_test, y_pred))
# Accuracy: 0.978

print('Accuracy: %.3f' % ppn.score(X_test_std, y_test))
# Accuracy: 0.978

6. 训练感知器模型

from matplotlib.colors import ListedColormap
import matplotlib.pyplot as plt
from distutils.version import LooseVersion

def plot_decision_regions(X, y, classifier, test_idx=None, resolution=0.02):

    # 绘图图形和颜色生成
    markers = ('o', 's', '^', 'v', '<')
    colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan')
    cmap = ListedColormap(colors[:len(np.unique(y))])

    # 绘图
    x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution),
                           np.arange(x2_min, x2_max, resolution))
    lab = classifier.predict(np.array([xx1.ravel(), xx2.ravel()]).T)
    lab = lab.reshape(xx1.shape)
    plt.contourf(xx1, xx2, lab, alpha=0.3, cmap=cmap)
    plt.xlim(xx1.min(), xx1.max())
    plt.ylim(xx2.min(), xx2.max())

    # 图加上分类样本
    for idx, cl in enumerate(np.unique(y)):
        plt.scatter(x=X[y == cl, 0], 
                    y=X[y == cl, 1],
                    alpha=0.8, 
                    c=colors[idx],
                    marker=markers[idx], 
                    label=f'Class {cl}', 
                    edgecolor='black')

    # 高亮显示测试数据集样本
    if test_idx:
        X_test, y_test = X[test_idx, :], y[test_idx]

        plt.scatter(X_test[:, 0],
                    X_test[:, 1],
                    c='none',
                    edgecolor='black',
                    alpha=1.0,
                    linewidth=1,
                    marker='o',
                    s=100, 
                    label='Test set')        

# 使用标准化数据训练一个感知器模型
X_combined_std = np.vstack((X_train_std, X_test_std))
y_combined = np.hstack((y_train, y_test))

# 绘图
plot_decision_regions(X=X_combined_std, y=y_combined,
                      classifier=ppn, test_idx=range(105, 150))
plt.xlabel('Petal length [standardized]')
plt.ylabel('Petal width [standardized]')
plt.legend(loc='upper left')

plt.tight_layout()
plt.show()

训练的感知器预测标签结果

从下图可以看出,对于class 1和class2 标签,有个别样本分类错误,无颜色的黑色圈为测试数据集样本。预测结果

机器学习文章

生信机器学习入门1 - 数据预处理与线性回归(Linear regression)预测

生信机器学习入门2 - 机器学习基本概念

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2089938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用python导出Excel表格中的lua配置

背景&#xff1a;游戏开发中&#xff0c; 策划使用Excel配置游戏中的参数数据&#xff0c;写一个工具用于导出这些配置 工具选择使用 python来开发&#xff0c;这样Windows、macOS、Linux平台都可以使用&#xff0c;而且有丰富的第三方模块。 本机先安装python&#xff0c;我…

nvidia-cuda-tensorrt-cudnn下载网站

tensorrt:https://developer.nvidia.com/tensorrt/download cudnn:https://developer.nvidia.com/rdp/cudnn-archive cuda:https://developer.nvidia.com/cuda-toolkit-archive

Python编码系列—Python微服务架构:构建可扩展的云原生应用

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

积极讨论取真经 自力更生辟新径 攻克难题会有时

你是如何克服编程学习中的挫折感的&#xff1f; 编程学习之路上&#xff0c;挫折感就像一道道难以逾越的高墙&#xff0c;让许多人望而却步。然而&#xff0c;真正的编程高手都曾在这条路上跌倒过、迷茫过&#xff0c;却最终找到了突破的方法。你是如何在Bug的迷宫中找到出口的…

火绒补充

目录 为什补充&#xff1f; 用户界面优化&#xff1a; 性能提升&#xff1a; 启发式检测和行为分析&#xff1a; 恶意网址拦截&#xff1a; 系统修复功能&#xff1a; 网络安全防护&#xff1a; 云查杀引擎&#xff1a; 漏洞修复和补丁管理&#xff1a; 隐私保护&…

C++类和对象(5)——运算符重载(以日期类为例)

运算符重载的作用 假设我们此时实现了日期类的运算符重载&#xff0c;我们就可以 实现如图的很多功能&#xff0c;完成日期计算器的底层代码。 运算符重载关键字 运算符重载的关键字是operator。 比如你想重载‘’运算符&#xff0c;那么语法格式就是 返回类型 operator …

Linux驱动开发基础(sr04超声波模块)

所学来自百问网 目录 1. SR04 超声波简介 2. 硬件设计 3. 软件设计 4. 示例代码 4.1 驱动代码 4.1.1 轮询模式 4.1.2 中断模式 4.3 应用程序 4.4 Makefile 4.5 实验效果 1. SR04 超声波简介 超声波测距模块是利用超声波来测距。模块先发送超声波&#xff0c;然后接…

大数据技术概述

4v特点 volume&#xff08;体量大&#xff09; velocity&#xff08;处理速度快&#xff09; variety&#xff08;数据类型多&#xff09; value&#xff08;价值密度低&#xff09; 核心设计理念 并行化 规模经济 虚拟化 分布式系统满足需求 系统架构 大数据处理流程 采集…

找论文的方法:如何找到本领域研究方向所需要的论文进行泛读和精读?

1、参考其他研究者给出的该领域的reading lists&#xff1a; 例如&#xff0c;在异配图神经网络领域&#xff1a; Awesome Resource on Graph Neural Networks With Heterophily&#xff1a;https://github.com/alexfanjn/Graph-Neural-Networks-With-Heterophily 在图对抗攻…

快速掌握GPTEngineer:用AI创建网页应用的实用教程

今天来聊聊一个非常有趣的工具——GPTEngineer。这是一个基于AI的网页开发平台&#xff0c;特别适合那些不熟悉编程但又想快速创建网页应用的人。如果你想用简单的文本描述来生成一个网站或者应用&#xff0c;GPTEngineer可能就是你需要的。我们一步步看看如何使用它。 1. 了解…

Guava Cache实现原理及最佳实践

本文内容包括Guava Cache的使用、核心机制的讲解、核心源代码的分析以及最佳实践的说明。 概要 Guava Cache是一款非常优秀本地缓存&#xff0c;使用起来非常灵活&#xff0c;功能也十分强大。Guava Cache说简单点就是一个支持LRU的ConcurrentHashMap&#xff0c;并提供了基于…

Java面试宝典-java基础08

Java面试宝典-java基础08 71、BIO、NIO、AIO有哪些应用场景72、简述一下BIO的编程流程73、NIO的三大核心部分是什么&#xff1f;74、NIO中buffer的四大属性是什么&#xff1f;75、对比一下BIO和NIO&#xff1f;76、FileChannel是做什么的&#xff1f;77、简述一下Selector选择器…

51单片机-矩阵键盘(基于LC602)

时间&#xff1a;2024.8.30 作者&#xff1a;Whappy 目的&#xff1a;手撕51&#xff08;第二遍&#xff09; 代码&#xff1a; main.c #include <REGX52.H> #include "LCD1602.h" #include "Delay.h" #include "MatrixKey.h"unsigned…

【Canvas与艺术】录王昌龄诗《从军行之四》

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>出塞青海长云暗雪山</title><style type"text/css&quo…

opencv实战项目十六:kmeans图像颜色聚类:

文章目录 前言K-means介绍效果 前言 在数字化时代&#xff0c;图像处理技术已成为计算机视觉领域的重要组成部分。其中&#xff0c;图像颜色聚类作为一项关键技术在众多应用场景中发挥着重要作用&#xff0c;如图像分割、物体识别、色彩调整等。K-means算法作为一种经典的聚类…

Java性能优化传奇之旅--Java万亿级性能优化之电商平台高峰时段性能大作战:策略与趋势洞察

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Redis基础知识学习(入门篇)

文章目录 五大数据结构一. String: 字符串二. Hash: 散列概念性质 三. List: 列表四. Set: 集合特点 五. Sorted Set: 有序集合 五大数据结构 一. String: 字符串 数据结构中&#xff0c;字符串要单独用一种存储结构来存储&#xff0c;称为串存储结构。这里的串指的就是字符串…

性能分析之使用 Jvisualvm dump 分析示例

一、前言 在 JMeter 入门系列中相信大家对工具使用已经没问题&#xff0c;今天开起性能测试进阶系列之 jvisualvm 工具简单学习&#xff0c;目标是通过演示 Jvisualvm 工具定位代码&#xff0c;帮助性能测试工程师直接定位代码位置&#xff0c;协助开发解决性能问题&#xff1…

Flink CDC MySQL数据同步到Doris表同步配置生成工具类

工具类 生成的配置 要同步表为&#xff1a; customer_user.tb_business_user_info express.route_push_service 请提前自行到doris中建好目标数据库&#xff0c;如果没有会报错 同步的配置文件如下&#xff1a;&#xff08;将配置内容保存为xxx.yaml文件到flink cdc提交任务&…

昇腾 Ascend 概念澄清 Host、Device、AI core、AI CPU、DVPP、AIPP、AscendCL、AscendC

昇腾 Ascend 概念澄清 Host、Device、AI core、AI CPU、DVPP、AIPP、AscendCL、AscendC flyfish Ascend C开发算子&#xff0c;偏低。 AscendCL开发应用&#xff0c;偏高。 AI core、AI CPU、DVPP都属于计算资源。 Ascend C开发的算子运行在AI Core上。 AIPP用于在AI Core上完…