Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何使用Scikit-learn在Python中构建机器学习分类器

如何使用Scikit-learn在Python中构建机器学习分类器

原创
作者头像
信姜缘
发布于 2018-07-31 01:50:31
发布于 2018-07-31 01:50:31
2.7K0
举报

介绍

机器学习是计算机科学、人工智能和统计学的研究领域。机器学习的重点是训练算法以学习模式并根据数据进行预测。机器学习特别有价值,因为它让我们可以使用计算机来自动化决策过程。

在本教程中,您将使用Scikit-learn(Python机器学习工具)在Python中实现一个简单的机器学习算法。您将使用Naive Bayes(NB)分类器,结合乳腺癌肿瘤信息数据库,预测肿瘤是恶性还是良性。

在本教程结束时,您将了解如何使用Python构建自己的机器学习模型。关于Python的语法详见腾讯云开发者手册Python中文开发文档

准备

要完成本教程,您需要:

  • Python 3 本地编程环境
  • 在virtualenv中安装Jupyter Notebook。Jupyter Notebooks在运行机器学习实验时非常有用。您可以运行短代码块并快速查看结果,从而轻松测试和调试代码。

第一步 - 导入Scikit-learn

让我们首先安装Python模块Scikit-learn,这是Python 最好、文档记录最多的机器学习库之一。

要开始我们的编码项目,先要激活我们的Python 3编程环境。确保您位于环境所在的目录中,然后运行以下命令:

代码语言:txt
AI代码解释
复制
$ . my_env/bin/activate

激活我们的编程环境后,检查是否已安装Sckikit-learn模块:

代码语言:txt
AI代码解释
复制
(my_env) $ python -c "import sklearn"

如果sklearn已安装,则此命令将完成且没有错误。如果未安装,您将看到以下错误消息:

代码语言:txt
AI代码解释
复制
Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named 'sklearn'

错误消息表明sklearn未安装,因此请使用pip下载库:

代码语言:txt
AI代码解释
复制
(my_env) $ pip install scikit-learn[alldeps]

安装完成后,启动Jupyter Notebook:

代码语言:txt
AI代码解释
复制
(my_env) $ jupyter notebook

在Jupyter中,创建一个名为ML Tutorial的新Python Notebook。在Notebook的第一个单元格,输入sklearn模块:

ML Tutorial

代码语言:txt
AI代码解释
复制
import sklearn

您的 Notebook应如下图所示:

Notebook
Notebook

现在我们已经在 Notebook中导入了sklearn,我们可以开始使用机器学习模型的数据集。

第二步 - 导入Scikit-learn的数据集

我们将在本教程中使用的数据集是乳腺癌威斯康星诊断数据库。该数据集包括关于乳腺癌肿瘤的各种信息,以及恶性良性的分类标签。该数据集在569个肿瘤上具有569个实例或数据,并且包括关于30个属性或特征的信息,例如肿瘤的半径,纹理,平滑度和面积。

使用该数据集,我们将构建机器学习模型以使用肿瘤信息来预测肿瘤是恶性的还是良性的。

Scikit-learn安装了各种数据集,我们可以将其加载到Python中,并包含我们想要的数据集。导入并加载数据集:

ML Tutorial

代码语言:txt
AI代码解释
复制
...

from sklearn.datasets import load_breast_cancer

# Load dataset
data = load_breast_cancer()

该data变量表示一个像字典一样工作的Python对象。字典的关键是分类标签名称(target_names),实际标签(target),属性/特征名称(feature_names)和属性(data)。

属性是任何分类器的关键部分。属性捕获有关数据性质的重要特征。鉴于我们试图预测的标签是恶性肿瘤与良性肿瘤,可能的有用属性有肿瘤的大小,半径和质地。

为每个重要信息集创建新变量并分配数据:

ML Tutorial

代码语言:txt
AI代码解释
复制
...

# Organize our data
label_names = data['target_names']
labels = data['target']
feature_names = data['feature_names']
features = data['data']

我们现在有了每组信息的列表。为了更好地理解我们的数据集,让我们通过输出我们的类标签、第一个数据实例的标签、我们的功能名称以及第一个数据实例的功能值来查看我们的数据:

ML Tutorial

代码语言:txt
AI代码解释
复制
...

# Look at our data
print(label_names)
print(labels[0])
print(feature_names[0])
print(features[0])

如果运行代码,您将看到以下结果:

输出结果
输出结果

如图所示,我们的类名是恶性良性,然后将其映射到二进制值0和1,其中0代表恶性肿瘤1代表良性肿瘤。因此,我们的第一个数据实例是恶性肿瘤,其平均半径为1.79900000e+01。

现在我们已经加载了数据,我们可以使用我们的数据来构建我们的机器学习分类器。

第三步 - 将数据组织到集合中

要评估分类器的性能,您应该始终在看不见的数据上测试模型。因此,在构建模型之前,将数据拆分为两部分:训练集测试集

您可以使用训练集在开发阶段训练和评估模型。然后,您使用训练的模型对看不见的测试集进行预测。这种方法让您了解模型的性能和稳健性。

幸运的是,sklearn有一个名为train_test_split()的函数,它将您的数据划分为这些集合。导入该函数,然后使用它来拆分数据:

ML Tutorial

代码语言:txt
AI代码解释
复制
...

from sklearn.model_selection import train_test_split

# Split our data
train, test, train_labels, test_labels = train_test_split(features,
                                                          labels,
                                                          test_size=0.33,
                                                          random_state=42)

该函数使用test_size参数随机分割数据。在这个例子中,我们现在有一个测试集(test)代表原始数据集的33%。然后剩下的数据(train)组成训练数据。我们还有列车/测试变量的相应标签,即train_labelstest_labels

我们现在可以继续培训我们的第一个模型。

第四步 - 构建和评估模型

机器学习有很多模型,每种模型都有自己的优点和缺点。在本教程中,我们将重点介绍一种通常在二进制分类任务中表现良好的简单算法,即Naive Bayes (NB)

首先,导入GaussianNB模块。然后使用GaussianNB()函数初始化模型,然后通过使用gnb.fit()将模型拟合到数据来训练模型:

ML Tutorial

代码语言:txt
AI代码解释
复制
...

from sklearn.naive_bayes import GaussianNB

# Initialize our classifier
gnb = GaussianNB()

# Train our classifier
model = gnb.fit(train, train_labels)

在我们训练模型之后,我们可以使用训练的模型对我们的测试集进行预测,这里,我们使用predict()函数。该predict()函数返回测试集中每个数据实例的预测数组。然后我们可以输出我们的预测,以了解模型确定的内容。

使用带有test的predict()函数输出结果:

ML Tutorial

代码语言:txt
AI代码解释
复制
...

# Make predictions
preds = gnb.predict(test)
print(preds)

运行代码,您将看到以下结果:

预测输出结果
预测输出结果

正如您在Jupyter Notebook输出中看到的,该predict()函数返回了一个0s和1s 数组,它们代表了我们对肿瘤类的预测值(恶性与良性)。

现在我们有了预测,让我们评估分类器的表现。

第五步 - 评估模型的准确性

使用真实类标签数组,我们可以通过比较两个数组(test_labelsvs.preds)来评估模型预测值的准确性。我们将使用sklearn函数accuracy_score()来确定机器学习分类器的准确性。

ML Tutorial

代码语言:txt
AI代码解释
复制
...

from sklearn.metrics import accuracy_score

# Evaluate accuracy
print(accuracy_score(test_labels, preds))

您将看到以下结果:

准确性结果
准确性结果

正如您在输出中看到的那样,NB分类器准确率为94.15%。这意味着分类器有94.15%的时间能够正确预测肿瘤是恶性还是良性。这些结果表明我们的30个属性的特征集是肿瘤类别的良好指标。

您已成功构建了第一台机器学习分类器。让我们通过将所有import语句放在Notebook或脚本的顶部来重新组织代码。代码的最终版本应如下所示:

ML教程

代码语言:txt
AI代码解释
复制
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score

# Load dataset
data = load_breast_cancer()

# Organize our data
label_names = data['target_names']
labels = data['target']
feature_names = data['feature_names']
features = data['data']

# Look at our data
print(label_names)
print('Class label = ', labels[0])
print(feature_names)
print(features[0])

# Split our data
train, test, train_labels, test_labels = train_test_split(features,
                                                          labels,
                                                          test_size=0.33,
                                                          random_state=42)

# Initialize our classifier
gnb = GaussianNB()

# Train our classifier
model = gnb.fit(train, train_labels)

# Make predictions
preds = gnb.predict(test)
print(preds)

# Evaluate accuracy
print(accuracy_score(test_labels, preds))

现在,您可以继续使用代码来查看是否可以使分类器的性能更佳。您可以尝试不同的功能子集,甚至尝试完全不同的算法。

结论

在本教程中,您学习了如何在Python中构建机器学习分类器。现在,您可以使用Scikit-learn在Python中加载数据、组织数据、训练、预测和评估机器学习分类器。本教程中的步骤可以帮助您简化在Python中使用自己的数据的过程,更多机器学习人工智能的相关教程可以访问腾讯云社区。


参考文献:《How To Build a Machine Learning Classifier in Python with Scikit-learn》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
机器学习神器Scikit-Learn入门教程
本篇文章通过简明快要的方式来介绍scikit-learn的使用,更多详细内容请参考官网:
算法进阶
2022/06/02
8010
机器学习神器Scikit-Learn入门教程
Scikit-Learn Cheat Sheet:Python机器学习
一个方便的scikit-learn备忘录,用于使用Python进行机器学习,包括代码示例。
iOSDevLog
2018/07/25
1.4K0
Scikit-Learn Cheat Sheet:Python机器学习
用scikit-learn开始机器学习
原文:https://www.raywenderlich.com/174-beginning-machine-learning-with-scikit-learn 作者: Mikael Konutgan 2018年2月12日·中级·文章·15分钟
iOSDevLog
2018/10/22
1.8K0
用scikit-learn开始机器学习
Scikit-learn 基础
Scikit-learn 是开源的 Python 库,通过统一的界面实现机器学习、预处理、交叉验证及可视化算法。
iOSDevLog
2019/05/29
8720
机器学习神器Scikit-Learn极简入门教程
Scikit-learn是一个非常知名的Python机器学习库,它广泛地用于统计分析和机器学习建模等数据科学领域。
皮大大
2022/01/12
2.6K0
机器学习神器Scikit-Learn极简入门教程
全网最全的Scikit-Learn学习手册!
图解机器学习 本文详解 scikit-learn 工具库的用法,覆盖机器学习基础知识、SKLearn讲解、SKLearn三大核心API、SKLearn高级API等内容。
用户6888863
2023/03/01
2.4K0
全网最全的Scikit-Learn学习手册!
Python机器学习:Scikit-Learn教程
一个易于理解的scikit-learn教程,可以帮助您开始使用Python机器学习。
iOSDevLog
2018/07/25
2.3K0
Python机器学习:Scikit-Learn教程
【Python篇】从零到精通:全面分析Scikit-Learn在机器学习中的绝妙应用
机器学习正在快速改变我们的世界,而Scikit-Learn作为Python生态中最为强大的机器学习库之一,是每个数据科学家和工程师不可或缺的工具。本篇文章旨在从零开始,带领你逐步掌握Scikit-Learn的核心功能与实际应用。无论你是刚刚接触机器学习的初学者,还是希望提升技能的进阶学习者,这篇文章都将为你提供一条清晰的学习路径,助你在数据科学领域中不断成长和突破。让我们一起踏上这段充满探索与发现的旅程,解锁机器学习的无限可能。
半截诗
2024/10/09
6260
【机器学习基础】Scikit-learn主要用法
Scikit-learn是基于NumPy、SciPy和Matplotlib的开源Python机器学习包,它封装了一系列数据预处理、机器学习算法、模型选择等工具,是数据分析师首选的机器学习工具包。   自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了,scikit-learn简称sklearn,支持包括分类,回归,降维和聚类四大机器学习算法。还包括了特征提取,数据处理和模型评估三大模块。
Francek Chen
2025/01/22
1860
【机器学习基础】Scikit-learn主要用法
从入门到精通Python机器学习:scikit-learn实战指南
在数据科学和机器学习领域,Python以其简洁的语法和强大的库支持,成为了许多开发者和研究者的首选语言。而在众多Python机器学习库中,scikit-learn以其易用性、灵活性和强大的算法集合,成为了最受欢迎的库之一。本文将深入探讨scikit-learn的原理和应用,并通过项目案例展示其在实际问题解决中的强大能力。
颜淡慕潇
2024/07/17
1.2K0
从入门到精通Python机器学习:scikit-learn实战指南
Scikit-learn的模型设计与选择
目的:本文的目的是从头到尾构建一个管道,以便在合成数据集上访问18个机器学习模型的预测性能。
代码医生工作室
2019/07/12
2.4K0
Scikit-learn的模型设计与选择
用Python与Scikit-learn构建高效机器学习模型
文章链接:https://cloud.tencent.com/developer/article/2472162
一键难忘
2024/11/29
2410
教程 | 如何通过Scikit-Learn实现多类别文本分类?
选自towardsdatascience 作者:Susan Li 机器之心编译 参与:程耀彤、黄小天 互联网的绝大多数的文本分类都是二进制的,本文要解决的问题更为复杂。作者使用 Python 和 Jupyter Notebook 开发系统,并借助 Scikit-Learn 实现了消费者金融投诉的 12 个预定义分类。本项目的 GitHub 地址见文中。 GitHub 地址:https://github.com/susanli2016/Machine-Learning-with-Python/blob/mas
机器之心
2018/05/10
1.5K0
《Scikit-Learn与TensorFlow机器学习实用指南》第2章 一个完整的机器学习项目
第2章 一个完整的机器学习项目 来源:ApacheCN《Sklearn 与 TensorFlow 机器学习实用指南》翻译项目 译者:@SeanCheney 校对:@Lisanaaa @飞龙 本章中,你会假装作为被一家地产公司刚刚雇佣的数据科学家,完整地学习一个案例项目。下面是主要步骤: 项目概述。 获取数据。 发现并可视化数据,发现规律。 为机器学习算法准备数据。 选择模型,进行训练。 微调模型。 给出解决方案。 部署、监控、维护系统。 使用真实数据 学习机器学习时,最好使用真实数据,而不是人工数
ApacheCN_飞龙
2018/05/16
2.9K0
基于Python的机器学习工具包:Scikit-learn
Scikit-learn是一个基于Python的机器学习工具包,旨在为用户提供简单而高效的工具来进行数据挖掘和数据分析。作为Python数据科学生态系统中最受欢迎的机器学习库之一,Scikit-learn提供了广泛的机器学习算法和工具,还包括数据预处理、特征选择、模型评估等功能。本文将详细介绍Scikit-learn库的特点、常见功能和应用场景,并通过具体案例演示其在Python数据分析中的具体应用。
网络技术联盟站
2023/07/03
7640
基于Python的机器学习工具包:Scikit-learn
Python机器学习工具:Scikit-Learn介绍与实践
Scikit-learn 简介 官方的解释很简单: Machine Learning in Python, 用python来玩机器学习。 什么是机器学习 机器学习关注的是:计算机程序如何随着经验积累自动提高性能。而最大的吸引力在于,不需要写任何与问题相关的特定代码,泛型算法就能告诉你一些关于数据的秘密。 Scikit-learn的优点 1、构建于现有的NumPy(基础n维数组包),SciPy(科学计算基础包), matplotlib(全面的2D/3D画图),IPython(加强的交互解释器),Sy
Python中文社区
2018/01/31
9030
Python机器学习工具:Scikit-Learn介绍与实践
【Scikit-Learn 中文文档】使用 scikit-learn 介绍机器学习 | ApacheCN
使用 scikit-learn 介绍机器学习 | ApacheCN 内容提要 在本节中,我们介绍一些在使用 scikit-learn 过程中用到的 机器学习 词汇,并且给出一些例子阐释它们。 机器学习:问题设置 一般来说,一个学习问题通常会考虑一系列 n 个 样本 数据,然后尝试预测未知数据的属性。 如果每个样本是 多个属性的数据 (比如说是一个多维记录),就说它有许多“属性”,或称 features(特征) 。 我们可以将学习问题分为几大类: 监督学习 , 其中数据带有一个附加属性,即我
片刻
2018/01/15
1.3K0
【Scikit-Learn 中文文档】使用 scikit-learn 介绍机器学习 | ApacheCN
Scikit-Learn: 机器学习的灵丹妙药
Scikit-Learn是python的核心机器学习包,它拥有支持基本机器学习项目所需的大部分模块。该库为从业者提供了一个统一的API(ApplicationProgramming Interface),以简化机器学习算法的使用,只需编写几行代码即可完成预测或分类任务。它是python中为数不多的库之一,它遵守了维护算法和接口层简单的承诺。该软件包是用python编写的,它包含了支持向量机的C++库(如LibSVM和LibLinearnforSupportVectorMachine)和广义线性模型实现。包依赖于Pandas(主要用于dataframe进程)、numpy(用于ndarray构造)和cip(用于稀疏矩阵)。
liuxuewen
2018/10/12
1.7K0
Scikit-Learn: 机器学习的灵丹妙药
教程 | 用Scikit-Learn构建K-近邻算法,分类MNIST数据集
选自TowardsDataScience 作者:Sam Grassi 机器之心编译 参与:乾树、刘晓坤 K 近邻算法,简称 K-NN。在如今深度学习盛行的时代,这个经典的机器学习算法经常被轻视。本篇教
机器之心
2018/05/08
1.4K0
教程 | 用Scikit-Learn构建K-近邻算法,分类MNIST数据集
从入门到精通:Scikit-learn实践指南
随着机器学习在各个领域的广泛应用,Python成为了一个备受欢迎的机器学习工具之一。在众多机器学习库中,Scikit-learn因其简单易用、功能强大而备受青睐。本文将介绍Scikit-learn的基本概念,以及如何在Python中使用它进行机器学习的实践。
一键难忘
2024/03/14
7130
推荐阅读
相关推荐
机器学习神器Scikit-Learn入门教程
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档