Python中的机器学习:从入门到实战

在这里插入图片描述

机器学习是人工智能领域的一个重要分支,它通过构建模型来使计算机从数据中学习并做出预测或决策。Python凭借其丰富的库和强大的生态系统,成为了机器学习的首选语言。本文将从基础到实战,详细介绍如何使用Python进行机器学习,涵盖数据预处理、模型训练、模型评估和实际应用等多个方面。

1. 安装必要的库

在开始机器学习之前,需要安装一些常用的库。这些库包括用于数据处理的pandas,用于数值计算的numpy,用于机器学习的scikit-learn,以及用于数据可视化的matplotlibseaborn

pip install pandas numpy scikit-learn matplotlib seaborn
2. 数据预处理

数据预处理是机器学习的重要步骤,包括数据清洗、特征选择、特征缩放等。

导入数据
import pandas as pd# 读取CSV文件
data = pd.read_csv('data.csv')# 查看前5行数据
print(data.head())
处理缺失值
# 检查缺失值
print(data.isnull().sum())# 删除含有缺失值的行
data = data.dropna()# 填充缺失值
data = data.fillna(0)
特征选择
# 选择特征和目标变量
X = data[['feature1', 'feature2', 'feature3']]
y = data['target']
特征缩放
from sklearn.preprocessing import StandardScaler# 创建标准化对象
scaler = StandardScaler()# 拟合和转换特征
X_scaled = scaler.fit_transform(X)
3. 模型训练

选择合适的模型并进行训练是机器学习的核心步骤。scikit-learn提供了多种机器学习算法,包括线性回归、逻辑回归、决策树、随机森林等。

线性回归
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)# 创建线性回归模型
model = LinearRegression()# 训练模型
model.fit(X_train, y_train)
决策树
from sklearn.tree import DecisionTreeClassifier# 创建决策树模型
model = DecisionTreeClassifier()# 训练模型
model.fit(X_train, y_train)
随机森林
from sklearn.ensemble import RandomForestClassifier# 创建随机森林模型
model = RandomForestClassifier(n_estimators=100, random_state=42)# 训练模型
model.fit(X_train, y_train)
4. 模型评估

模型训练完成后,需要对其性能进行评估。常用的评估指标包括准确率、精确率、召回率、F1分数等。

评估回归模型
from sklearn.metrics import mean_squared_error, r2_score# 预测
y_pred = model.predict(X_test)# 评估模型
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)print(f"Mean Squared Error: {mse}")
print(f"R^2 Score: {r2}")
评估分类模型
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score# 预测
y_pred = model.predict(X_test)# 评估模型
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='weighted')
recall = recall_score(y_test, y_pred, average='weighted')
f1 = f1_score(y_test, y_pred, average='weighted')print(f"Accuracy: {accuracy}")
print(f"Precision: {precision}")
print(f"Recall: {recall}")
print(f"F1 Score: {f1}")
5. 模型调优

通过调整模型的超参数,可以进一步提高模型的性能。scikit-learn提供了网格搜索(Grid Search)和随机搜索(Random Search)等方法来进行超参数调优。

网格搜索
from sklearn.model_selection import GridSearchCV# 定义参数网格
param_grid = {'n_estimators': [50, 100, 200],'max_depth': [None, 10, 20, 30],'min_samples_split': [2, 5, 10]
}# 创建随机森林模型
model = RandomForestClassifier(random_state=42)# 创建网格搜索对象
grid_search = GridSearchCV(model, param_grid, cv=5, scoring='accuracy')# 执行网格搜索
grid_search.fit(X_train, y_train)# 获取最佳参数和最佳模型
best_params = grid_search.best_params_
best_model = grid_search.best_estimator_print(f"Best Parameters: {best_params}")
随机搜索
from sklearn.model_selection import RandomizedSearchCV# 定义参数分布
param_dist = {'n_estimators': [50, 100, 200],'max_depth': [None, 10, 20, 30],'min_samples_split': [2, 5, 10]
}# 创建随机森林模型
model = RandomForestClassifier(random_state=42)# 创建随机搜索对象
random_search = RandomizedSearchCV(model, param_distributions=param_dist, n_iter=10, cv=5, scoring='accuracy', random_state=42)# 执行随机搜索
random_search.fit(X_train, y_train)# 获取最佳参数和最佳模型
best_params = random_search.best_params_
best_model = random_search.best_estimator_print(f"Best Parameters: {best_params}")
6. 实际应用

机器学习在实际应用中有着广泛的应用场景,如客户细分、推荐系统、欺诈检测等。

客户细分
from sklearn.cluster import KMeans# 选择特征
X = data[['feature1', 'feature2', 'feature3']]# 创建KMeans模型
kmeans = KMeans(n_clusters=3, random_state=42)# 训练模型
kmeans.fit(X)# 获取聚类标签
labels = kmeans.labels_# 添加聚类标签到数据集中
data['cluster'] = labels# 查看每个聚类的特征分布
print(data.groupby('cluster').mean())
推荐系统
from sklearn.metrics.pairwise import cosine_similarity# 选择用户-物品评分矩阵
ratings = data.pivot(index='user_id', columns='item_id', values='rating')# 计算相似度矩阵
similarity_matrix = cosine_similarity(ratings.fillna(0))# 获取用户1的相似用户
user_similarities = similarity_matrix[0]# 推荐物品
recommendations = ratings.iloc[user_similarities.argsort()[::-1][:10]].mean(axis=0).sort_values(ascending=False)print(recommendations)
欺诈检测
from sklearn.ensemble import IsolationForest# 选择特征
X = data[['feature1', 'feature2', 'feature3']]# 创建Isolation Forest模型
model = IsolationForest(contamination=0.05, random_state=42)# 训练模型
model.fit(X)# 预测异常值
anomalies = model.predict(X)# 添加异常标签到数据集中
data['anomaly'] = anomalies# 查看异常数据
print(data[data['anomaly'] == -1])
结语

Python在机器学习领域具有强大的生态系统,通过使用pandasnumpyscikit-learn等库,可以轻松实现从数据预处理到模型训练、模型评估和实际应用的全流程。希望本文能帮助你更好地理解和应用Python进行机器学习,提升你的数据分析和建模能力。

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

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

相关文章

【汇编语言】寄存器(CPU工作原理)(二)—— 汇编指令的基础操作

文章目录 前言正文——(一气呵成解决本文内容)结语 前言 📌 汇编语言是很多相关课程(如数据结构、操作系统、微机原理)的重要基础。但仅仅从课程的角度出发就太片面了,其实学习汇编语言可以深入理解计算机底…

Android Framework AMS(02)AMS启动及相关初始化5-8

该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要涉及systemserver启动AMS及初始化AMS相关操作。同时由于该部分内容过多,因此拆成2个章节,本章节是第二章节&…

LabVIEW提高开发效率技巧----使用动态事件

在LabVIEW开发过程中,用户交互行为可能是多样且不可预知的。为应对这些变化,使用动态事件是一种有效的策略。本文将从多个角度详细介绍动态事件的概念及其在LabVIEW开发中的应用技巧,并结合实际案例,说明如何通过动态事件提高程序…

Vector不清晰点学习易错点

什么是迭代器 是一个广义指针它可以是指针,也可以是一个可对其执行类似指针得操作-如解除引用(如operator*())和递增(operator())STL中每个容器类都定义了一个合适的迭代器,该迭代器的类型是一个名为itera…

【Python游戏开发】贪吃蛇游戏demo拓展

拓展上一项目【Python游戏开发】贪吃蛇 实现穿墙效果 # 检测游戏是否结束 def check_gameover():global finished# 移除蛇头位置超过窗口判断for n in range(len(body) - 1):if(body[n].x snake_head.x and body[n].y snake_head.y):finished True # 状态检测 def ch…

html5 + css3(下)

目录 CSS基础基础认识体验cssCSS引入方式 基础选择器选择器-标签选择器-类选择器-id选择器-通配符 字体和文本样式1.1 字体大小1.2 字体粗细1.3 字体样式(是否倾斜)1.4 常见字体系列(了解)1.5 字体系列拓展-层叠性font复合属性文本…

oh-crop: OpenHarmony/HarmonyOS上的简单的图片剪裁库,可用于头像剪裁等常见场景。

📚 简介 oh-crop: OpenHarmony/HarmonyOS上的简单的图片剪裁库,可用于头像剪裁等常见场景。 代码仓库:oh-crop 📚 下载安装 ohpm i xinyansoft/oh-cropOpenHarmony ohpm 环境配置等更多内容,请参考: 下载安装三方库…

一个值得关注的3D生成新算法:速度和图像生成平齐,能生成合理的展开贴图和高质量mesh

今天跟大家介绍的GIMDiffusion是一种新的Text-to-3D模型,利用几何图像(Geometry Images)来高效地表示3D形状,避免了复杂的3D架构。通过结合现有的Text-to-Image模型如Stable Diffusion的2D先验知识,GIMDiffusion能够在…

【数据结构】【链表代码】相交链表

/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {//先求出两个链表的长度ListNode…

Unity 编辑器多开

开发多人联机的功能时大多数会遇到测试机不方便的问题。想多开同一个项目Uinty又禁止。。。因为在使用Unity Editor打开一个项目时,Unity Editor会在项目目录建立一个Temp目录,同时对里面的一个UnityLockfile文件进行加锁。SO...可以使用以下方法进行多开…

【easypoi 一对多导入解决方案】

easypoi 一对多导入解决方案 1.需求2.复现问题2.1校验时获取不到一对多中多的完整数据2.2控制台报错 Cannot add merged region B5:B7 to sheet because it overlaps with an existing merged region (B3:B5). 3.如何解决第二个问题处理: Cannot add merged region …

ISO IEC 18004 2015 PDF 文字版下载

ISO_IEC_18004_2015_en-US - 道客巴巴 (doc88.com)https://www.doc88.com/p-67816330893254.html

Kafka和RabbitMQ区别

RabbitMQ的消息延迟是微秒级,Kafka是毫秒级(1毫秒1000微秒) 延迟消息是指生产者发送消息发送消息后,不能立刻被消费者消费,需要等待指定的时间后才可以被消费。 Kafka的单机呑吐量是十万级,RabbitMQ是万级…

vSAN02:容错、存储策略、文件服务、快照与备份、iSCSI

目录 vSAN容错条带化存储策略1. 创建新策略2. 应用存储策略 vSAN文件服务文件服务快照与备份 vSAN iSCSI目标服务 vSAN容错 FTT:Fault to Tolerance 允许故障数 故障域:每一台vSAN主机是一个故障域 - 假设3台超融合(3计算1存储)&…

【Kubernetes】常见面试题汇总(五十四)

目录 120.创建 init C 容器后,其状态不正常? 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。 题目 69-113 属于【Kubernetes】的生产…

【Spring Boot 入门一】构建你的第一个Spring Boot应用

一、引言 在当今的软件开发领域,Java一直占据着重要的地位。而Spring Boot作为Spring框架的延伸,为Java开发者提供了一种更加便捷、高效的开发方式。它简化了Spring应用的搭建和配置过程,让开发者能够专注于业务逻辑的实现。无论是构建小型的…

Windows搭建RTMP服务器

这里写自定义目录标题 1 Nginx-RTMP服务器搭建1.1 下载Nginx1.2 下载Nginx的RTMP扩展包1.3 配置Nginx1.4 启动Nginx1.5 查看Nginx状态 2 FFmpeg推流2.1 下载FFmpeg2.2 配置FFmpeg环境变量2.3 验证FFmpeg配置 3 视频推流3.1 OBS推流3.2 FFmpeg推流 4 VLC拉流4.1 VLC4.2 打开网络…

4款专业电脑数据恢复软件,帮你保障数据安全。

电脑里面会出现的数据丢失场景有很多,像硬盘故障、回收站清空、电脑格式化、系统崩溃、病毒入侵等等;如果发现数据丢失后,建议应停止使用电脑,避免新的数据写入覆盖丢失的数据。然后再尝试进行数据找回,如果想自己进行…

合肥企业参访:走进联想合肥智能制造基地参观学习

跟随华研标杆游学高丽华高老师去到联想参观游学 联想合肥智能制造基地成立于2011年,是联想集团全球蕞大的PC研发和制造基地,也是智能制造示范基地。基地占地约500亩,拥有全球PC制造业蕞大的单体厂房以及业界主板、整机生产线。在这里&#xf…

RTSP作为客户端 推流 拉流的过程分析

之前写过一个 rtsp server 作为服务端的简单demo 这次分析下 rtsp作为客户端 推流和拉流时候的过 A.作为客户端拉流 TCP方式 1.Client发送OPTIONS方法 Server回应告诉支持的方法 2.Client发送DESCRIPE方法 这里是从海康摄像机拉流并且设置了用户名密码 Server回复未认证 3.客…