【scikit-learn入门指南】:机器学习从零开始

news2024/11/28 13:37:42

1. 简介

scikit-learn是一款用于数据挖掘和数据分析的简单高效的工具,基于NumPy、SciPy和Matplotlib构建。它能够进行各种机器学习任务,如分类、回归和聚类。

2. 安装scikit-learn

在开始使用scikit-learn之前,需要确保已经安装了scikit-learn库。可以使用以下命令安装:

pip install scikit-learn

3. 数据预处理

数据预处理是机器学习中的一个重要步骤。在这一部分,我们将讨论如何处理缺失值、标准化数据以及编码类别变量。

缺失值处理

在实际数据集中,经常会遇到缺失值。我们可以使用scikit-learn的SimpleImputer类来填补缺失值。

import numpy as np
from sklearn.impute import SimpleImputer

# 创建一个包含缺失值的数据集
data = np.array([[1, 2, np.nan], [3, np.nan, 6], [7, 8, 9]])

# 使用均值填补缺失值
imputer = SimpleImputer(strategy='mean')
data_imputed = imputer.fit_transform(data)

print("填补后的数据:\n", data_imputed)

结果分析:以上代码用列的均值填补了缺失值,输出的填补后数据如下:

填补后的数据:
[[1. 2. 7.5]
 [3. 5. 6.]
 [7. 8. 9.]]

数据标准化

不同特征的数值范围可能差异很大,为了提高模型的性能,通常需要对数据进行标准化处理。

from sklearn.preprocessing import StandardScaler

# 标准化数据
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data_imputed)

print("标准化后的数据:\n", data_scaled)

结果分析:数据标准化后,各特征的均值为0,标准差为1。

类别变量编码

对于分类变量,需要将其转换为数值型。可以使用OneHotEncoder来进行独热编码。

from sklearn.preprocessing import OneHotEncoder

# 创建一个包含类别变量的数据集
data = np.array([['Male', 1], ['Female', 3], ['Female', 2]])

# 独热编码
encoder = OneHotEncoder(sparse=False)
data_encoded = encoder.fit_transform(data)

print("编码后的数据:\n", data_encoded)

结果分析:独热编码将类别变量转换为二进制特征。

4. 数据集划分

在训练模型前,需要将数据集划分为训练集和测试集。train_test_split函数可以轻松实现这一点。

from sklearn.model_selection import train_test_split

# 创建一个示例数据集
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]])
y = np.array([0, 1, 0, 1, 0])

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

print("训练集特征:\n", X_train)
print("测试集特征:\n", X_test)

结果分析:数据集按照80%的比例划分为训练集和测试集。

5. 模型选择与训练

在这部分,我们将介绍几种常用的机器学习模型,并展示如何使用scikit-learn进行训练和预测。

线性回归

线性回归是最简单的回归模型之一。

from sklearn.linear_model import LinearRegression

# 创建线性回归模型
model = LinearRegression()

# 训练模型
model.fit(X_train, y_train)

# 预测
predictions = model.predict(X_test)

print("线性回归预测结果:", predictions)

结果分析:线性回归模型对测试集进行了预测,输出预测值。

逻辑回归

逻辑回归常用于二分类问题。

from sklearn.linear_model import LogisticRegression

# 创建逻辑回归模型
model = LogisticRegression()

# 训练模型
model.fit(X_train, y_train)

# 预测
predictions = model.predict(X_test)

print("逻辑回归预测结果:", predictions)

结果分析:逻辑回归模型对测试集进行了预测,输出预测类别。

K近邻算法

K近邻算法是一种基于实例的学习方法。

from sklearn.neighbors import KNeighborsClassifier

# 创建K近邻模型
model = KNeighborsClassifier(n_neighbors=3)

# 训练模型
model.fit(X_train, y_train)

# 预测
predictions = model.predict(X_test)

print("K近邻预测结果:", predictions)

结果分析:K近邻模型对测试集进行了预测,输出预测类别。

决策树

决策树是一种常见的分类和回归方法。

from sklearn.tree import DecisionTreeClassifier

# 创建决策树模型
model = DecisionTreeClassifier()

# 训练模型
model.fit(X_train, y_train)

# 预测
predictions = model.predict(X_test)

print("决策树预测结果:", predictions)

结果分析:决策树模型对测试集进行了预测,输出预测类别。

6. 模型评估

在这一部分,我们将讨论如何使用交叉验证、混淆矩阵和ROC曲线来评估模型性能。

交叉验证

交叉验证可以帮助我们更稳定地评估模型性能。

from sklearn.model_selection import cross_val_score

# 使用交叉验证评估模型
scores = cross_val_score(model, X, y, cv=5)

print("交叉验证得分:", scores)

结果分析:交叉验证得分展示了模型在不同折中的性能。

混淆矩阵

混淆矩阵用于评估分类模型的性能。

from sklearn.metrics import confusion_matrix

# 计算混淆矩阵
cm = confusion_matrix(y_test, predictions)

print("混淆矩阵:\n", cm)

结果分析:混淆矩阵展示了模型的分类情况,包括正确和错误的分类数量。

ROC曲线

ROC曲线用于评估二分类模型的性能。

from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt

# 计算ROC曲线
fpr, tpr, thresholds = roc_curve(y_test, model.predict_proba(X_test)[:,1])
roc_auc = auc(fpr, tpr)

# 绘制ROC曲线
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic')
plt.legend(loc="lower right")
plt.show()

结果分析:ROC曲线展示了模型在不同阈值下的性能,AUC值越接近1表示模型性能越好。

7. 结论

本教程详细介绍了如何使用scikit-learn进行数据预处理、模型训练与评估。scikit-learn提供了丰富的工具和方法,可以方便地进行机器学习任务。希望通过本教程,读者能对scikit-learn有一个全面的了解,并能够在实际项目中应用这些知识。

通过对各个模型的详细解释和代码实现,相信你已经掌握了scikit-learn的基础操作。尝试用你自己的数据集进行练习,进一步提升你的机器学习技能吧!

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

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

相关文章

物联网模型

1.1 流模型源码 到OneNote Makefile出错:build/output/paho_c_version 先make clean移除bulid/output内的动态库,再make就会看到出错,将build/output的动态库文件命名以 . so结束,再次make就不会出错了。在sudo make install 安装在usr/local/lib中 修改main.c文件之后,…

火车头采集织梦发布模块插件下载及教程

火车头采集网页数据发布到织梦CMS(DeDeCMS)系统操作步骤如下: 1. 火车头采集织梦DeDeCMS发布模块下载安装 百度网盘:火车头采集织梦CMS发布插件下载地址 提取码:414h 2. 在火车头采集软件导入织梦De…

【深度学习】stable-diffusion-3,SD3生图体验

stabilityai/stable-diffusion-3-medium 代码地址: https://huggingface.co/stabilityai/stable-diffusion-3-medium 可在这里体验: https://huggingface.co/spaces/ameerazam08/SD-3-Medium-GPU

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 生成哈夫曼树(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 生成哈夫曼树(100分) 🌍 评测功能需要订阅专栏后私信联系清…

全面解析OpenStack架构:掌握云计算核心组件!

Web Frontends Horizon 技术原理:Horizon是OpenStack的基于Web的用户界面,利用Django框架开发,提供用户友好的界面来管理和使用OpenStack资源。应用场景:用于管理虚拟机、存储、网络等资源。举例:管理员通过Horizon界面…

响应式德米拉数字内容交易系统素材下载站模板

★模板说明★ 该数字交易系统设计非常完美,两种响应式模式,可打开边栏模式和盒子模式;八种网站颜色,四种风格颜色可供用户自行选择,还可在网站选背景图片;完美的分成系统、充值功能、个人中心等等都以html…

SuperMap iClient3D 11i(2023) SP1 for Cesium 调整

SuperMap iClient3D 11i(2023) SP1 for Cesium 最新版本 下载地址 SuperMap技术资源中心|为您提供全面的在线技术服务 每一次版本升级,都要对代码进行修改调整,都是为了解决功能需求。当然,也为产品做了小白鼠测试,发现bug,优化功能。 由于前端开发使用的是dojo框架,类…

idea自定义注释模板

1、打开配置 setting -> Editor -> Live Template 2、添加TemplateGroup,并在添加的TemplateGroup下加LiveTemplate 3、配置Live Template 内容: **** Description: * $param$* return $return$ * author $user$* date $date$ $time$**/变量…

【文档智能 RAG】RAG增强之路-智能文档解析关键技术难点及PDF解析工具PDFlux

前言 在私域知识问答和企业知识工程领域,结合Retrieval-Augmented Generation(RAG)模型和大型语言模型(LLM)已成为主流方法。然而,企业中存在着大量的PDF文件,PDF解析的低准确性显著影响了基于…

Docker Nginx

Docker官网 https://www.docker.com/https://www.docker.com/ 删除原先安装的Docker sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ …

为什么都在避坑抖店?现阶段小白真的很难做起来吗?现状分析

我是王路飞。 如果有想做抖店的,你们可能都发现了一个现象。 那就是现在很多抖店商家都在劝告新手小白,不要入局抖店了,都在劝避坑。 难道现阶段新手小白入局抖音小店,真的很难做起来吗? 我给你们分析下抖店现状&a…

9. 文本三剑客之awk

文章目录 9.1 什么是awk9.2 awk命令格式9.3 awk执行流程11.4 行与列11.4.1 取行11.4.2 取列 9.1 什么是awk 虽然sed编辑器是非常方便自动修改文本文件的工具,但其也有自身的限制。通常你需要一个用来处理文件中的数据的更高级工具,它能提供一个类编程环…

干部考评系统如何评估干部表现

一、引言 干部考评系统是现代组织管理中不可或缺的一部分,它通过科学、公正、客观的方式对干部的表现进行评估,为干部的选拔、培养、激励和约束提供有力依据。本文旨在探讨干部考评系统如何有效评估干部表现。 二、干部考评系统的构建 明确考评目标&a…

winform 应用程序 添加 wpf控件后影响窗体DPI改变

第一步:添加 应用程序清单文件 app.manifest 第二步:把这段配置 注释放开,第一个配置true 改成false

移动端消息中心,你未必会设计,发一些示例出来看看。

APP消息中心是一个用于管理和展示用户收到的各种消息和通知的功能模块。它在APP中的作用是提供一个集中管理和查看消息的界面,让用户能够方便地查看和处理各种消息。 以下是设计APP消息中心的一些建议: 1. 消息分类: 将消息按照不同的类型进…

Echats-wordcloud 文字云图的踩坑点【Unknown series wordCloud】

在词云渲染时遇到渲染不出来的问题: 原因分析: 1、echart和wordcloud版本不匹配(我的是匹配的) 解决方案: 1、echart和wordcloud版本要匹配: echart4x 使用wordcloud1x版本 echart5x 使用wordcloud2x版本…

win环境安装Node.js的多种方式

今天我们分享win环境安装Node.js的多种方式: 首先要明白Node.js是一个JavaScript运行环境,它基于Google的V8引擎进行封装,允许JavaScript运行在服务器端。Node.js让JavaScript成为一种与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语…

Python也能“零延迟“通信吗?ZeroMQ带你开启高速模式!

目录 1、零基础入门ZeroMQ 🚀 1.1 ZeroMQ简介与安装 1.2 基础概念:Socket类型详解 1.3 实战演练:Hello World示例 2、深入浅出消息模式 🔌 2.1 请求-应答模式( REQ/REP ) 2.2 发布-订阅模式( PUB/SUB ) 2.3 推送-拉取模式( PUSH/PULL ) 3、Python实战ZeroM…

什么是无杂散动态范围 (SFDR)?为什么 SFDR 很重要?

有多种不同的规格可用于表征电路线性度。SFDR 指标是一种常用的规范。该指标定义为所需信号幅度与感兴趣带宽内杂散的比率(图 1)。 图 1. 显示 SFDR 指标的图表。 对于 ADC,SFDR 展示了 ADC 如何在存在大信号的情况下同时处理小信号。作为一个…

面向对象编程垃圾回收机制

系列文章目录 文章目录 系列文章目录前言一、垃圾回收机制(Garbage Collection) 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用…