初见scikit-learn之基础教程
初见scikit-learn之基础教程
- scikit-learn 基础教程
- 1. scikit-learn 简介
- 1.1 什么是 scikit-learn?
- 1.2 scikit-learn 的主要功能
- 2. 安装 scikit-learn
- 2.1 安装方法
- 2.2 验证安装
- 3. scikit-learn 基本使用
- 3.1 数据加载与预处理
- 3.1.1 加载数据集
- 3.1.2 数据拆分
- 3.1.3 数据标准化
- 3.2 分类模型
- 3.2.1 逻辑回归
- 3.2.2 决策树
- 3.3 回归模型
- 3.3.1 线性回归
- 3.4 聚类模型
- 3.4.1 K-Means 聚类
- 3.5 降维
- 3.5.1 主成分分析(PCA)
- 3.6 模型选择与评估
- 3.6.1 交叉验证
- 3.6.2 网格搜索
- 4. 实战案例
- 4.1 房价预测
- 4.1.1 数据准备
- 4.1.2 数据预处理
- 4.1.3 模型训练与评估
- 4.2 客户细分
- 4.2.1 数据准备
- 4.2.2 K-Means 聚类
- 4.2.3 可视化
- 5. 总结
scikit-learn 基础教程
scikit-learn 是一个广泛使用的 Python 机器学习库,提供了简单而高效的工具来进行数据挖掘和数据分析。它涵盖了数据预处理、特征选择、模型训练和评估等多个方面。本文将详细介绍 scikit-learn 的基础知识,包括基本概念、常用模块和功能、以及实际应用示例。
1. scikit-learn 简介
1.1 什么是 scikit-learn?
scikit-learn 是一个开源的 Python 库,用于机器学习和数据挖掘。它提供了一系列简单而高效的工具来处理数据预处理、特征选择、模型训练和评估等任务。scikit-learn 构建于 NumPy、SciPy 和 matplotlib 之上,并且符合 SciPy 生态系统的设计原则。
1.2 scikit-learn 的主要功能
- 分类:用于将数据分为不同的类别(例如,垃圾邮件分类)。
- 回归:预测连续的数值(例如,房价预测)。
- 聚类:将数据分组为不同的簇(例如,客户细分)。
- 降维:减少数据的维度(例如,PCA)。
- 模型选择:选择和评估模型(例如,交叉验证)。
- 数据预处理:数据清理和特征工程(例如,标准化、归一化)。
2. 安装 scikit-learn
2.1 安装方法
可以使用 pip 来安装 scikit-learn:
pip install scikit-learn
或者,使用 conda 安装:
conda install scikit-learn
2.2 验证安装
安装完成后,可以通过以下代码验证 scikit-learn 是否安装成功:
import sklearn
print(sklearn.__version__)
3. scikit-learn 基本使用
3.1 数据加载与预处理
3.1.1 加载数据集
scikit-learn 提供了一些内置的数据集,例如鸢尾花数据集(Iris Dataset):
from sklearn.datasets import load_iris# 加载鸢尾花数据集
data = load_iris()
X = data.data
y = data.target
3.1.2 数据拆分
将数据集拆分为训练集和测试集:
from sklearn.model_selection import train_test_split# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
3.1.3 数据标准化
标准化数据,使其均值为 0,方差为 1:
from sklearn.preprocessing import StandardScalerscaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
3.2 分类模型
3.2.1 逻辑回归
逻辑回归是一种线性分类算法:
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score# 创建逻辑回归模型
model = LogisticRegression()
model.fit(X_train_scaled, y_train)# 预测
y_pred = model.predict(X_test_scaled)# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')
3.2.2 决策树
决策树是一种基于树结构的分类方法:
from sklearn.tree import DecisionTreeClassifier# 创建决策树模型
model = DecisionTreeClassifier()
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')
3.3 回归模型
3.3.1 线性回归
线性回归用于预测连续变量:
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error# 创建线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 评估模型
mse = mean_squared_error(y_test, y_pred)
print(f'Mean Squared Error: {mse:.2f}')
3.4 聚类模型
3.4.1 K-Means 聚类
K-Means 是一种常用的聚类算法:
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt# 创建 K-Means 模型
model = KMeans(n_clusters=3, random_state=42)
model.fit(X)# 获取聚类结果
labels = model.predict(X)# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('K-Means Clustering')
plt.show()
3.5 降维
3.5.1 主成分分析(PCA)
PCA 用于减少数据维度:
from sklearn.decomposition import PCA# 创建 PCA 模型
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)# 可视化降维后的数据
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('PCA of Iris Dataset')
plt.show()
3.6 模型选择与评估
3.6.1 交叉验证
交叉验证用于评估模型的性能:
from sklearn.model_selection import cross_val_score# 创建模型
model = LogisticRegression()# 进行交叉验证
scores = cross_val_score(model, X, y, cv=5)print(f'Cross-Validation Scores: {scores}')
print(f'Mean Score: {scores.mean():.2f}')
3.6.2 网格搜索
网格搜索用于调整模型的超参数:
from sklearn.model_selection import GridSearchCV# 创建模型
model = LogisticRegression()# 定义参数范围
param_grid = {'C': [0.1, 1, 10],'penalty': ['l1', 'l2']
}# 创建网格搜索
grid_search = GridSearchCV(model, param_grid, cv=5)# 训练网格搜索
grid_search.fit(X_train_scaled, y_train)# 输出最佳参数
print(f'Best Parameters: {grid_search.best_params_}')
print(f'Best Score: {grid_search.best_score_:.2f}')
4. 实战案例
4.1 房价预测
4.1.1 数据准备
假设我们有一个房价数据集,包含房屋的各种特征和价格:
import pandas as pd# 读取数据集
data = pd.read_csv('house_prices.csv')# 特征选择和标签
X = data[['num_rooms', 'size', 'location']]
y = data['price']
4.1.2 数据预处理
对数据进行预处理和标准化:
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split# 数据拆分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 标准化数据
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
4.1.3 模型训练与评估
使用线性回归模型进行训练和评估:
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error# 创建模型
model = LinearRegression()
model.fit(X_train_scaled, y_train)# 预测
y_pred = model.predict(X_test_scaled)# 评估模型
mse = mean_squared_error(y_test, y_pred)
print(f'Mean Squared Error: {mse:.2f}')
4.2 客户细分
4.2.1 数据准备
假设我们有一个客户数据集,包含客户的特征信息:
# 读取数据集
data = pd.read_csv('customer_data.csv')# 特征选择
X = data[['age', 'income', 'spending_score']]
4.2.2 K-Means 聚类
使用 K-Means 聚类进行客户细分:
from sklearn.cluster import KMeans# 创建 K-Means 模型
model = KMeans(n_clusters=4, random_state=42)
model.fit(X)# 获取聚类结果
labels = model.predict(X)# 添加聚类标签到数据中
data['cluster'] = labels
4.2.3 可视化
可视化客户聚类结果:
import matplotlib.pyplot as plt# 可视化聚类结果
plt.scatter(data['age'], data['income'], c=labels, cmap='viridis')
plt.xlabel('Age')
plt.ylabel('Income')
plt.title('Customer Clustering')
plt.show()
5. 总结
scikit-learn 是一个功能强大的机器学习库,提供了丰富的工具和功能来处理各种数据分析任务。这里我嫩介绍了 scikit-learn 的基础知识,包括数据加载与预处理、分类与回归模型、聚类与降维技术、模型选择与评估等内容。scikit-learn 官方文档
相关文章:
初见scikit-learn之基础教程
初见scikit-learn之基础教程 scikit-learn 基础教程 1. scikit-learn 简介1.1 什么是 scikit-learn?1.2 scikit-learn 的主要功能 2. 安装 scikit-learn2.1 安装方法2.2 验证安装 3. scikit-learn 基本使用3.1 数据加载与预处理3.1.1 加载数据集3.1.2 数据拆分3.1.3…...
基于STM32的嵌入式深度学习系统教程
目录 引言环境准备嵌入式深度学习系统基础代码实现:实现嵌入式深度学习系统 数据采集与预处理深度学习模型训练与优化模型部署与推理实时数据处理与反馈应用场景:智能物联网设备常见问题与解决方案收尾与总结 引言 随着深度学习在各种应用中的广泛采用…...
hive udf去掉map中的一个或者多个key
实现一个hive udf,可以将Map中的某一个或者多个key去掉,这里要继承GenericUDF 这个抽象类,然后Override evaluate这个函数即可,可以把执行这个udf前初始化的一些内容放在initialize方法内,比如参数的判断,函数的返回值类型等等。 代码写好之后,可以用如下方法创建这个函…...
模型量化技术综述:揭示大型语言模型压缩的前沿技术
大型语言模型(LLMs)通常因为体积过大而无法在消费级硬件上运行。这些模型可能包含数十亿个参数,通常需要配备大量显存的GPU来加速推理过程。 因此越来越多的研究致力于通过改进训练、使用适配器等方法来缩小这些模型的体积。在这一领域中&am…...
一文掌握Prompt:万能框架+优化技巧+常用指标
👉目录 1 写在前面 2 Prompt 万能框架 3 框架的细化 4 在框架上增加更多信息(RAG) 5 让大模型更好的思考(CoT) 6 附加技巧 7 优化方式及常用指标 8 写在最后 随着大模型在2023年横空出世,“Prompt 工程” 应…...
Vue 常用组件间通信方式
Vue 常用组件间通信方式 1. 父子组件通信 1.1 Props 父组件通过 props 向子组件传递数据,子组件通过 props 接收数据。 <!-- ParentComponent.vue --> <template><ChildComponent :message"parentMessage"></ChildComponent>…...
NineData云原生智能数据管理平台新功能发布|2024年7月版
本月发布 12 项更新,其中性能优化 3 项、功能优化 8 项、安全性发布 1 项。 1. 性能优化 数据复制 - SQL Server 增量性能优化 调整读取和写入方式,让 SQL Server 增量复制的性能轻松达到 5000 RPS 以上。 数据复制 - Doris|SelectDB|StarRocks 性能优…...
验收测试:确保软件符合业务需求和合同要求
目录 前言1. 验收测试的概念1.1 用户验收测试(UAT)1.2 操作验收测试(OAT) 2. 验收测试的主要作用2.1 确认业务需求的满足2.2 验证合同要求的实现2.3 提升用户信心 3. 验收测试在整个测试中的地位3.1 测试的最后一道关卡3.2 用户与…...
Qt | QChartView+QDateTimeAxis(日期和时间数据图表)+QPieSeries(饼图)
点击上方"蓝字"关注我们 01、QDateTimeAxis QDateTimeAxis 是 Qt 中用于图表的轴类,它专门用于处理日期和时间数据。这个类允许你在图表上显示和解释与日期和时间相关的数据点。例如,在 Qt 的图表库中,你可以使用 QDateTimeAxis 来创建一个时间序列图表,展示股票…...
用闲置的阿里云服务器使用 NPS 实现内网穿透
最近有个项目需要给外地的同事预览一下,但是公司没有可以公网访问的测试服务器,所以想到用内网穿透的方式让外地同事可以访问到我的本机。刚好我有一台阿里云的服务器,双十一打折买了3年,1000左右,2核8G,买…...
一款免费开源绿色免安装的透明锁屏工具
一款免费开源绿色免安装的透明锁屏工具 这个工具的特点就是电脑锁屏的时候,仍然显示原桌面,但是无法操作,需要输入密码才可以解锁。输入密码界面也是隐藏的需要按键才能显示输入密码框。 电脑★★★★★透明锁屏工具:https://pa…...
程序员保持健康的 10 个技巧
长时间坐在电脑前,整天甚至通宵编程、处理 bug 和面对 dealine 的压力。作为一名软件工程师绝对不是一个非常健康的职业。 我经常去欧洲和美国会见许多开发人员。我经常注意到的是:许多开发人员把自己当成机器。他们已经完全放弃了感受身体的感觉&#…...
Java并发迷宫:同步的魔法与死锁的诅咒
在Java编程的宇宙中,有一个充满神秘与挑战的维度——并发编程。它如同一座错综复杂的迷宫,每个角落都潜藏着惊喜与陷阱。在这篇博客里,我们将一起探索这座迷宫的深处,揭开同步的魔法与死锁的诅咒。 第一章:同步魔法的…...
CoderGuide
CoderGuide是一个针对同学们前后端求职面试的开源项目,作为一名互联网/IT从业人员,经常需要搜索一些书籍、面试题等资源,在这个过程中踩过很多坑、浪费过很多时间。欢迎大家 Watch、Star,供各位同学免费使用,永不收费&…...
链式二叉树
链式二叉树,也称为二叉链表,是数据结构中一种非常重要的树形结构表示方法。在链式二叉树中,每个节点不仅包含数据域,还包含两个指针域,分别指向其左子节点和右子节点。这种结构允许二叉树动态地增长和缩减,…...
PHP高校迎新系统-计算机毕业设计源码08468
摘要 随着高校规模的不断扩大和新生人数的增加,传统的手工登记和管理方式已经无法满足高效、准确的需求。为了提升大学新生入学迎新工作的效率和质量,本研究设计开发了一套高校迎新系统。系统通过信息技术的应用,集成了首页、交流论坛、通知公…...
泛微开发修炼之旅--41Ecology基于触发器实现增量数据同步(人员、部门、岗位、人员关系表、人岗关系表)
一、需求背景 我们在项目上遇到一个需求,需要将组织机构数据(包含人员信息、部门信息、分部信息、人岗关系)生成的增量数据,实时同步到三方的系统中,三方要求,只需要增量数据即可。 那么基于ecology系统&a…...
FVM安装及配置
一、下载fvm 包 git:Release fvm 3.1.7 leoafarias/fvm GitHub 解压到本地文件夹,然后添加环境变量 管理员模式打开cmd,查看是否成功 fvm --version 二、安装Dart SDK 下载Dart SDK:Dart for Windows 三、安装GIT 四、指定…...
[Git][认识Git]详细讲解
目录 1.什么是仓库?2.认识工作区、暂存区、版本库3.认识 .git1.index2.HEAD && master3.objects4.总结 1.什么是仓库? 仓库:进⾏版本控制的⼀个⽂件⽬录 2.认识工作区、暂存区、版本库 工作区:在电脑上写代码或⽂件的⽬录…...
Win11系统Docker部署Blazor程序
1. 开发环境 Windows 11 家庭版,默认支持WSL2 2. Docker安装 安装Docker Desktop需要启用Win11的Linux子系统和虚拟机。以管理员身份运行命令行程序,执行如下命令: 启用适用于 Linux 的 Windows 子系统 dism.exe /online /enable-featur…...
C语言自定义类型结构体与位段超详解
文章目录 1. 结构体类型的声明1. 1 结构体声明1. 2 结构体变量的创建和初始化1. 3 结构体的特殊声明1. 3 结构体的自引用 2. 结构体内存对齐2. 1 对齐规则2. 2 为什么存在内存对齐2. 3 修改默认对齐数 3. 结构体传参4. 结构体实现位段4. 1 什么是位段4. 2 位段成员的内存分配4.…...
JS中关于预编译的【关键知识点】总结
在JavaScript中,预编译(hoisting)是指在代码执行之前,JavaScript引擎会首先对代码进行扫描,将所有的变量声明和函数声明提升到代码的最顶部。这一过程使得我们在代码中可以在声明之前使用变量和函数。理解预编译对于深…...
Elasticsearch 映射(mapping)
概念 在 Elasticsearch 中,映射(Mapping)定义了索引中字段的类型和属性。它是索引数据结构的基础,类似于传统数据库中的表结构定义。映射不仅定义了字段的类型(如 text、keyword、integer 等)…...
开放式耳机更适合运动的时候使用?开放式耳机推荐指南
开放式耳机确实非常适合运动时使用,原因主要有以下几点。 首先,保持对外界的感知是很重要的一点。在运动的时候,我们需要听到周围的环境声音,比如车辆的行驶声、行人的呼喊等,以便及时做出反应,保证自身安全…...
食堂窗口自助点餐小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,商家管理,店铺信息管理,菜品分类管理,菜品信息管理,订单管理,系统管理 微信端账号功能包括:系统首页&#…...
请说出路由传参和获取参数的三种方式
在Vue.js中使用Vue Router进行路由管理时,传递和获取参数是常见的需求。这里介绍三种主要的路由传参和获取参数的方式: 1. 通过URL的查询参数(Query Parameters) 传递参数: 当你需要传递一些非敏感数据(…...
精准防控,高效管理:AI智能分析网关V4区域未停留检测算法的介绍及应用
一、区域未停留AI检测算法概述 随着人工智能和计算机视觉技术的飞速发展,区域未停留AI检测算法作为一种重要的视频分析技术,逐渐在各个领域得到广泛应用。该算法通过高效处理视频流数据,能够实时分析并判断目标对象是否在预设区域内有足够的…...
html+css練習:iconfont使用
1.網址地址:https://www.iconfont.cn/search/index 2.註冊登錄,將需要的圖標添加到購物車 3.下載代碼 4.下載后的代碼有一個html頁面,裡面有詳細的使用方式...
算法导论 总结索引 | 第五部分 第二十一章:用于不相交集合的数据结构
一些应用涉及 将n个不同的元素分成一组不相交的集合。寻找包含给定元素的唯一集合 和 合并两个集合 1、不相交集合的操作 1、一个不相交集合 数据结构 维持了 一个不相交动态集的集合 S {S_1, S_2,…, S_n}。用一个代表 来标识每个集合,它是这个集合的某个成员。…...
【单例设计模式】揭秘单例模式:从原理到实战的全方位解析(开发者必读)
文章目录 深入理解单例设计模式:原理、实现与最佳实践引言第一部分:设计模式简介第二部分:单例模式定义第三部分:单例模式的优点和缺点第四部分:单例模式的实现方式懒汉式非线程安全的实现线程安全的实现(双…...
大型电子商务网站建设成本/衡阳有实力seo优化
昨天晚上玩的很晚,到家已经是凌晨1点多了,刚躺下就接到公司,说数据库有问题,电话基本解决,可躺下就开始失眠,一直到早晨6点多才迷糊一会。最近一直就失眠啊!!! 做事要选择时机&#…...
宁波建设工程主管部门网站/百度一下你就知道移动官网
开发需求 删除列表内数据,不影响到其他模块内的内容 代码实现 后端处理代码 Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");resp.setCh…...
搜索引擎优化简称seo/东莞seo网络营销
每次有点什么感想,想写blog的时候,都是不在电脑跟前的时候,慢慢的,我的blog有点开始荒凉了。就像这几天的长假,懒得连电脑都不想碰,每次想写点什么的时候,想想还要开机,就放弃了。这…...
wordpress怎么中文/seo技术培训茂名
前言:最近,手机市场上出现了许多孪生手机或者情侣手机新品,其中较有代表性的如诺基亚N97和N97 Mini,HTC HD和HTC HD Mini,它们都是外观上缩小一圈的纯粹Mini版本。另外还有如HTC钻石系列,它们是相同体积下的…...
哪个网站做效果图好/台州seo排名扣费
环境说明 操作系统:CentOS 7 JDK:1.8 Erlang:19.0.4或最新版 RabbitMQ:3.6.12或最新版 版本对应关系 典型应用场景 1、跨系统的异步通信 人民银行二代支付系统,使用重量级消息队列 IBM MQ,异步࿰…...
电子商务建立网站前期准备/网站优化外包公司
Not allowed to start service Intent { xxxxx }: app is in background uid nullandroid A应用启动B应用里的service? 根据AMS的代码: 如果B应用没有运行(即没有B进程在运行),startservice()会启动一个新的B进程,但是为啥实际…...