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

news/2024/9/29 6:08:58 标签: 前端框架, python

在这里插入图片描述

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

1. 安装必要的库

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

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

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

导入数据
python">import pandas as pd

# 读取CSV文件
data = pd.read_csv('data.csv')

# 查看前5行数据
print(data.head())
处理缺失值
python"># 检查缺失值
print(data.isnull().sum())

# 删除含有缺失值的行
data = data.dropna()

# 填充缺失值
data = data.fillna(0)
特征选择
python"># 选择特征和目标变量
X = data[['feature1', 'feature2', 'feature3']]
y = data['target']
特征缩放
python">from sklearn.preprocessing import StandardScaler

# 创建标准化对象
scaler = StandardScaler()

# 拟合和转换特征
X_scaled = scaler.fit_transform(X)
3. 模型训练

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

线性回归
python">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)
决策树
python">from sklearn.tree import DecisionTreeClassifier

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

# 训练模型
model.fit(X_train, y_train)
随机森林
python">from sklearn.ensemble import RandomForestClassifier

# 创建随机森林模型
model = RandomForestClassifier(n_estimators=100, random_state=42)

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

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

评估回归模型
python">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}")
评估分类模型
python">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)等方法来进行超参数调优。

网格搜索
python">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}")
随机搜索
python">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. 实际应用

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

客户细分
python">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())
推荐系统
python">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)
欺诈检测
python">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.niftyadmin.cn/n/5682534.html

相关文章

【深度学习】注意力机制与自注意力机制详解

深度学习中的注意力机制/自注意力机制详解 1. 注意力机制的通俗理解2. 注意力和自注意力机制的区别3. 自注意力机制原理与计算流程3.1 引入自注意力机制的目的与思想3.2 从向量角度理解 [R1]3.3 从Self-Attention核心公式理解 [R3] 4. 多头自注意力机制(Multi-head …

MySQL:MySQL中 limit 1000000,10 为什么慢?如何优化?

一、前言 在 MySQL 中,使用 LIMIT X, Y 语句时,如果 X 的值很大,查询性能确实可能会受到影响。这是因为 MySQL 需要先扫描或处理前 X 条记录,然后才能返回从第 X1 条开始的 Y 条记录。当 X 很大时,这个扫描过程会消耗大…

【STM32】RTT-Studio中HAL库开发教程七:IIC通信--EEPROM存储器FM24C04

文章目录 一、简介二、模拟IIC时序三、读写流程四、完整代码五、测试验证 一、简介 FM24C04D,4K串行EEPROM:内部32页,每个16字节,4K需要一个11位的数据字地址进行随机字寻址。FM24C04D提供4096位串行电可擦除和可编程只读存储器&a…

使用 vite 快速初始化 shadcn-vue 项目

Vite 1. 创建项目 使用 vite 创建一个新的 vue 项目。 如果你正在使用 JS 模板,需要存在 jsconfig.json 文件才能正确运行 CLI。 # npm 6.x npm create vitelatest my-vue-app --template vue-ts# npm 7, extra double-dash is needed: npm create vitelatest m…

单点登录(SSO)基础

单点登录(SSO, Single Sign-On) 是一种身份认证机制,允许用户在多个独立的应用系统中只进行一次登录操作,即可访问所有授权的应用或服务,而无需每次切换应用时都进行登录。SSO 提高了用户体验的便捷性,同时…

Stable Diffusion绘画 | 插件-Deforum:动态视频生成

Deforum 与 AnimateDiff 不太一样, AnimateDiff 是生成丝滑变化视频的,而 Deforum 的丝滑程度远远没有 AnimateDiff 好。 它是根据对比前面一帧的画面,然后不断生成新的相似图片,来组合成一个完整的视频。 Deforum 的优点在于可…

如何评估和观测 IoTDB 所需的网络带宽?

IoTDB 推荐网络配置监控网络 I/O 一网打尽! 网络数据传输速度太慢?延迟太高? 网络的硬件配置如何确定? 网络流量过大导致拥塞? 在现代计算机系统和应用程序中,网络 I/O 性能是决定整体系统表现的关键因素之…

ansible 配置

目录 1.集群自动化维护工具 ansible 2.ansible管理架构 3.安装ansible 4.Iventory主机模式 5.通过ping验证 6.ansible常用模块 7.命令行模块 7.1command模块 7.2shell模块 7.3scripts模块 7.4file模块 7.5copy模块​ 7.6yum模块 1.集群自动化维护工具 ansibl…