【人工智能】Python常用库-Scikit-learn常用方法教程

Scikit-learn 是一个功能强大的机器学习库,支持数据预处理、分类、回归、聚类、降维等功能,广泛用于模型开发与评估。以下是 Scikit-learn 的常用方法及详细说明。


1. 安装与导入

安装 Scikit-learn:

pip install scikit-learn

导入基本模块:

import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import accuracy_score, mean_squared_error

2. 数据预处理

2.1 数据标准化

用于将数据缩放到均值为 0,标准差为 1。

import numpy as np
from sklearn.preprocessing import StandardScaler# 示例数据
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)
print(scaled_data)

输出结果

[[-1.22474487 -1.22474487 -1.22474487][ 0.          0.          0.        ][ 1.22474487  1.22474487  1.22474487]]
2.2 标签编码

用于将类别变量转换为数值。

from sklearn.preprocessing import LabelEncoderlabels = ['cat', 'dog', 'mouse', 'cat']
encoder = LabelEncoder()
encoded_labels = encoder.fit_transform(labels)
print(encoded_labels)

输出结果

[0 1 2 0]
2.3 特征选择

选择重要的特征以优化模型。

from sklearn import datasets
from sklearn.feature_selection import SelectKBest, f_classifX, y = datasets.load_iris(return_X_y=True)
selector = SelectKBest(score_func=f_classif, k=2)
X_selected = selector.fit_transform(X, y)
print(X_selected[:5])

输出结果

[[1.4 0.2][1.4 0.2][1.3 0.2][1.5 0.2][1.4 0.2]]

3. 模型训练与评估

3.1 线性回归

适用于连续目标变量。

from sklearn import datasets
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_splitfrom MSE import mean_squared_error# 生成样本数据
X, y = datasets.make_regression(n_samples=100, n_features=1, noise=10, random_state=42)# 数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 模型训练
model = LinearRegression()
model.fit(X_train, y_train)# 模型评估
y_pred = model.predict(X_test)
print("Mean Squared Error:", mean_squared_error(y_test, y_pred))

输出结果

Cost (MSE): 4.28125
Mean Squared Error: 52.101113265935126
3.2 逻辑回归

适用于分类问题。

from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split# 加载数据
X, y = datasets.load_iris(return_X_y=True)# 数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 模型训练
clf = LogisticRegression(max_iter=200)
clf.fit(X_train, y_train)# 模型评估
y_pred = clf.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

输出结果

Accuracy: 1.0
3.3 支持向量机

用于分类和回归。

from sklearn import datasets
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC# 加载数据
X, y = datasets.load_iris(return_X_y=True)# 数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 模型训练
svc = SVC(kernel='linear')
svc.fit(X_train, y_train)# 模型评估
y_pred = svc.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

输出结果

Accuracy: 1.0

4. 无监督学习

4.1 K-means 聚类
from sklearn import datasets
from sklearn.cluster import KMeans# 生成数据
X, _ = datasets.make_blobs(n_samples=300, centers=4, cluster_std=0.6, random_state=42)# 模型训练
kmeans = KMeans(n_clusters=4, random_state=42, n_init=10)
kmeans.fit(X)# 可视化
import matplotlib.pyplot as pltplt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='red', marker='X')
plt.title("K-means Clustering")
plt.show()

 

4.2 PCA 降维
from matplotlib import pyplot as plt
from sklearn import datasets
from sklearn.decomposition import PCA# 加载数据
X, y = datasets.load_iris(return_X_y=True)# 降维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)# 可视化
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis')
plt.title("PCA Dimensionality Reduction")
plt.xlabel("Principal Component 1")
plt.ylabel("Principal Component 2")
plt.show()

 


5. 模型优化

5.1 交叉验证
from sklearn import datasets
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_scoreX, y = datasets.load_iris(return_X_y=True)# 线性回归交叉验证
scores = cross_val_score(LinearRegression(), X, y, cv=5, scoring='neg_mean_squared_error')
print("Cross-validated MSE:", -scores.mean())

输出结果

Cross-validated MSE: 0.0689701255462469
5.2 网格搜索
from sklearn import datasets
from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.svm import SVC# 加载数据
X, y = datasets.load_iris(return_X_y=True)# 数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 参数网格
param_grid = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}
grid = GridSearchCV(SVC(), param_grid, cv=5)
grid.fit(X_train, y_train)print("Best parameters:", grid.best_params_)

输出结果 

Best parameters: {'C': 1, 'kernel': 'linear'}

6. 总结

Scikit-learn 提供了丰富的机器学习工具和简单的 API,可实现从数据预处理到模型评估的完整流程。通过上述方法,您可以快速构建和优化机器学习模型,从简单线性回归到复杂的非监督学习和降维方法。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tcon技术和Tconless技术介绍

文章目录 TCON技术(传统时序控制器)定义:主要功能:优点:缺点: TCONless技术(无独立时序控制器)定义:工作原理:优点:缺点: TCON与TCONl…

计算机基础(下)

内存管理 内存管理主要做了什么? 操作系统的内存管理非常重要,主要负责下面这些事情: 内存的分配与回收:对进程所需的内存进行分配和释放,malloc 函数:申请内存,free 函数:释放内存…

【青牛科技】TS223 单触摸键检测IC

概 述 : TS223是 触 摸 键 检 测 IC, 提 供 1个 触 摸 键 。 触 摸 检 测 IC是 为 了用 可 变 面 积 的 键 取 代 传 统 的 按 钮 键 而 设 计 的 。低 功 耗 和 宽 工 作 电压是 触 摸 键 的 DC和 AC特 点 。TS223采 用 SSOP16、 SOT23-6的 封 装 形 式…

CUDA补充笔记

文章目录 一、不同核函数前缀二、指定kernel要执行的线程数量三、线程需要两个内置坐标变量来唯一标识线程四、不是blocksize越大越好,上限一般是1024个blocksize 一、不同核函数前缀 二、指定kernel要执行的线程数量 总共需要线程数是: 1 * N N个线程…

“华为杯”研究生数学建模比赛历年赛题汇总(2004-2024)

文章目录 赛题链接历年赛题2004年赛题2005年赛题2006年赛题2007年赛题2008年赛题2009年赛题2010年赛题2011年赛题2012年赛题2013年赛题2014年赛题2015年赛题2016年赛题2017年赛题2018年赛题2019年赛题2020年赛题2020年赛题2021年赛题2022年赛题2023年赛题2024年赛题 赛题链接 部…

Python学习指南 + 谷歌浏览器如何安装插件

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 前言 Python 官方文档的使用 谷歌浏览器中如何安装插件 前言 在学习Python时,我们可能会出现这样的困惑&#x…

java写一个石头剪刀布小游戏

石头剪刀布是一款经典的手势游戏,通常由两人参与,玩法简单且充满趣味。玩家通过出示手势代表“石头”、“剪刀”或“布”,并根据规则比较手势决定胜负。它广泛用于休闲娱乐、决策或解压活动。 一、功能简介 用户与计算机对战。 用户输入选择:石头、剪刀或布。 计算机随机生…

docker如何安装redis

第一步 如果未指定redis,则安装的是最新版的 docker pull redis 创建一个目录 mkdir /usr/local/docker/redis 然后直接可以下载redis,这是方式确实不怎么好,应该找在官网上找对应的redis配置文件 wget http://download.redis.io/redis-stab…

【作业九】RNN-SRN-Seq2Seq

点击查看作业内容 目录 1 实现SRN (1)使用numpy实现 (2)在(1)的基础上,增加激活函数tanh (3)使用nn.RNNCell实现 (4)使用nn.RNN实现 2 使用R…

利用Docker容器技术部署发布web应用程序

Docker是什么? docker 是一个开源的应用容器引擎,可以帮助开发者打包应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何…

【AI学习】Mamba学习(十八):S6的硬件感知设计

上一篇Mamba的文章提到,S6 models这个名称的由来是:S4 models with a selection mechanism and computed with a scan。 所以,S6模型首先是选择机制:先前模型的一个关键限制对选择性复制和归纳等重要合成任务不够适用&#xff0c…

Bug Fix 20241122:缺少lib文件错误

今天有朋友提醒才突然发现 gitee 上传的代码存在两个很严重,同时也很低级的错误。 因为gitee的默认设置不允许二进制文件的提交, 所以PH47框架下的库文件(各逻辑层的库文件),以及Stm32Cube驱动的库文件都没上传到Gi…

实现Excel文件和其他文件导出为压缩包,并导入

导出 后端&#xff1a; PostMapping("/exportExcelData")public void exportExcelData(HttpServletRequest request, HttpServletResponse response, RequestBody ResData resData) throws IOException {List<Long> menuIds resData.getMenuIds();List<Co…

4.4 JMeter 请求参数类型详解

欢迎大家订阅【软件测试】 专栏&#xff0c;开启你的软件测试学习之旅&#xff01; 文章目录 前言1 参数&#xff08;键值对形式&#xff09;2 消息体数据&#xff08;JSON/XML 格式&#xff09;3 文件上传 前言 在使用 JMeter 进行接口测试时&#xff0c;常见的请求参数类型主…

【山大909算法题】2014-T1

文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 为带表头的单链表类Chain编写一个成员函数Reverse&#xff0c;该函数对链表进行逆序操作&#xff08;将链表中的结点按与原序相反的顺序连接&#xff09;&#xff0c;要求逆序操作就地进行&#xff0c;不分配…

Apache OFBiz xmlrpc XXE漏洞(CVE-2018-8033)

目录 1、漏洞描述 2、EXP下载地址 3、EXP利用 1、漏洞描述 Apache OFBiz是一套企业资源计划&#xff08;ERP&#xff09;系统。它提供了广泛的功能&#xff0c;包括销售、采购、库存、财务、CRM等。 Apache OFBiz还具有灵活的架构和可扩展性&#xff0c;允许用户根据业务需求…

路由传参、搜索、多选框勾选、新增/编辑表单复用

前言&#xff1a; 记录添加运动员页面功能的具体实现 ①由赛事管理页面跳转时路由传参&#xff08;携带该页面表格中莫某条数据对应的赛事id到另一个页面&#xff09;&#xff1b; ②搜索框实时搜索&#xff1b; ③多选框勾选搜索&#xff1b; ④新增表单和编辑表单复用&a…

【11-20期】Java面试进阶:深入解析核心问题与实战案例

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Java &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 文章题目&#xff1a;Java面试进阶&#xff1a;深入解析11-20期核心问题与实战案例 摘要&#xff1a; 本篇…

Java后端如何进行文件上传和下载 —— 本地版

简介&#xff1a; 本文详细介绍了在Java后端进行文件上传和下载的实现方法&#xff0c;包括文件上传保存到本地的完整流程、文件下载的代码实现&#xff0c;以及如何处理文件预览、下载大小限制和运行失败的问题&#xff0c;并提供了完整的代码示例。 大体思路 1、文件上传 …

基于SpringBoot的工程教育认证的计算机课程管理系统【附源码】

基于SpringBoot的工程教育认证的计算机课程管理系统 效果如下&#xff1a; 系统登录页面 教师主页面 学生管理页面 课程信息页面 通知公告页面 学生课程管理页面 学生课程信息页面 研究背景 随着信息技术的快速发展&#xff0c;计算机课程管理系统的应用在教育领域变得愈发重…