首页 > 其他分享 >Jupyter Notebook与机器学习:使用Scikit-Learn构建模型

Jupyter Notebook与机器学习:使用Scikit-Learn构建模型

时间:2024-07-20 13:27:33浏览次数:12  
标签:Jupyter 模型 Scikit Notebook Learn test import model

Jupyter Notebook与机器学习:使用Scikit-Learn构建模型

介绍

Jupyter Notebook是一款强大的交互式开发环境,广泛应用于数据科学和机器学习领域。Scikit-Learn是一个流行的Python机器学习库,提供了简单高效的工具用于数据挖掘和数据分析。本教程将详细介绍如何在Jupyter Notebook中使用Scikit-Learn构建机器学习模型,涵盖数据加载与预处理、模型训练与评估等步骤。

前提条件

  • 基本的Python编程知识
  • 基本的机器学习概念
  • 安装了Jupyter Notebook和Scikit-Learn库

教程大纲

  1. 环境设置
  2. 数据加载与预处理
  3. 数据集划分
  4. 模型选择与训练
  5. 模型评估
  6. 模型优化
  7. 保存和加载模型
  8. 总结与展望

1. 环境设置

1.1 安装Jupyter Notebook和Scikit-Learn

在终端中执行以下命令来安装Jupyter Notebook和Scikit-Learn:

pip install jupyter scikit-learn

1.2 启动Jupyter Notebook

在终端中执行以下命令来启动Jupyter Notebook:

jupyter notebook

2. 数据加载与预处理

2.1 导入必要的库

在Jupyter Notebook中导入所需的Python库:

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

2.2 加载数据集

使用Scikit-Learn自带的Iris数据集进行演示:

iris = load_iris()
X = iris.data
y = iris.target

# 将数据集转换为DataFrame
df = pd.DataFrame(data=np.c_[X, y], columns=iris.feature_names + ['target'])
df.head()

2.3 数据预处理

标准化数据:

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

3. 数据集划分

将数据集划分为训练集和测试集:

X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

4. 模型选择与训练

4.1 选择模型

选择一个简单的机器学习模型,如逻辑回归:

from sklearn.linear_model import LogisticRegression

model = LogisticRegression()

4.2 训练模型

在训练集上训练模型:

model.fit(X_train, y_train)

5. 模型评估

5.1 预测与评估

在测试集上进行预测并评估模型性能:

from sklearn.metrics import accuracy_score, classification_report, confusion_matrix

y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")

# 打印分类报告
print("Classification Report:")
print(classification_report(y_test, y_pred))

# 绘制混淆矩阵
import matplotlib.pyplot as plt
import seaborn as sns

cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=iris.target_names, yticklabels=iris.target_names)
plt.xlabel('Predicted')
plt.ylabel('True')
plt.show()

6. 模型优化

6.1 超参数调优

使用网格搜索进行超参数调优:

from sklearn.model_selection import GridSearchCV

param_grid = {
    'C': [0.1, 1, 10, 100],
    'solver': ['liblinear', 'saga']
}

grid_search = GridSearchCV(LogisticRegression(), param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)

print(f"Best parameters: {grid_search.best_params_}")
print(f"Best cross-validation accuracy: {grid_search.best_score_ * 100:.2f}%")

# 使用最佳参数训练最终模型
best_model = grid_search.best_estimator_
best_model.fit(X_train, y_train)

7. 保存和加载模型

7.1 保存模型

使用joblib库保存训练好的模型:

import joblib

joblib.dump(best_model, 'logistic_regression_model.pkl')

7.2 加载模型

加载保存的模型:

loaded_model = joblib.load('logistic_regression_model.pkl')

# 在测试集上评估加载的模型
loaded_model_accuracy = loaded_model.score(X_test, y_test)
print(f"Loaded model accuracy: {loaded_model_accuracy * 100:.2f}%")

8. 总结与展望

通过本教程,您已经学习了如何在Jupyter Notebook中使用Scikit-Learn构建机器学习模型的完整流程,包括数据加载与预处理、模型选择与训练、模型评估、模型优化以及模型的保存和加载。您可以将这些知识应用到其他机器学习任务中,并尝试使用更复杂的数据集和模型,进一步提高机器学习技能。希望本教程能帮助您在数据科学和机器学习领域取得更大进步!

标签:Jupyter,模型,Scikit,Notebook,Learn,test,import,model
From: https://blog.csdn.net/weixin_41859354/article/details/140569905

相关文章

  • 在Jupyter Notebook中进行大数据分析:集成Apache Spark
    在JupyterNotebook中进行大数据分析:集成ApacheSpark介绍JupyterNotebook是一款广泛使用的数据科学工具,结合ApacheSpark后,能够处理和分析大规模数据。ApacheSpark是一个快速的统一分析引擎,支持大数据处理和分布式计算。本教程将详细介绍如何在JupyterNotebook中集成......
  • D. Learning to Paint
    原题链接题解dp+多次优先队列设\(dp[i]\)为\([1,i]\)区间内,前\(k\)个最大值(有可能不足k个)(注意\(dp[i]\)是一个序列)则\(dp[i]=\{dp[j][t]+a[j+2][i],j\in[0,i-2],t\in[0,top_j]\},\sumt=k\)code#include<bits/stdc++.h>#definelllonglongusingnamespace......
  • sklearn中的增量学习:特征提取的艺术
    sklearn中的增量学习:特征提取的艺术在机器学习领域,特征提取是构建有效模型的关键步骤。然而,并非所有数据集都适合一次性加载到内存中进行处理,尤其是在处理大规模数据集时。Scikit-learn(sklearn)提供了一些支持增量学习的模型,允许用户逐步地从数据中学习并提取特征。本文将详......
  • 聚类优化:Scikit-Learn中的数据标签分配艺术
    聚类优化:Scikit-Learn中的数据标签分配艺术在聚类分析中,标签分配是一个关键步骤,它直接影响聚类的解释性和实用性。Scikit-Learn(简称sklearn),作为Python中广受欢迎的机器学习库,提供了多种工具和方法来优化聚类标签的分配。本文将详细介绍这些方法,并提供详细的解释和代码示例......
  • 视觉探秘:sklearn中聚类标签的可视化之道
    视觉探秘:sklearn中聚类标签的可视化之道在数据科学领域,聚类分析是一种无监督学习方法,用于将数据集中的样本划分为若干个组或“簇”,使得同一组内的样本相似度高,而不同组之间的样本相似度低。Scikit-Learn(简称sklearn),作为Python中广受欢迎的机器学习库,不仅提供了多种聚类算法......
  • 探索数据的内在结构:使用Scikit-Learn确定聚类数
    探索数据的内在结构:使用Scikit-Learn确定聚类数在机器学习中,聚类是一种无监督学习方法,旨在发现数据的内在结构。一个关键问题是如何确定聚类数,即数据集中应该有多少个聚类。Scikit-Learn(简称sklearn),作为Python中广泛使用的机器学习库,提供了多种方法来帮助我们确定聚类数。......
  • FedNAS: Federated Deep Learning via Neural Architecture Search-_BaseLine-FedNAS
    背景与挑战:介绍FL,引出数据异构问题和数据不可见性,因此需要大量的人力来定制更好的模型架构,因为设备异构性,边缘设备需要更高的计算负担和通信成本。介绍解决数据异构的相关工作,指出这些工作需要强大的先验假设。预定义的模型不一定是最优的贡献:1.提出FedNAS方法,在边缘设备之间......
  • FINCH: Enhancing Federated Learning With Hierarchical Neural Architecture Search
    背景与挑战:介绍FL联邦学习,指出两个联邦学习的缺点::::danger1.预定义的架构容易使模型训练陷入局部次优解,导致训练性能低下2.开发一个足够精确和小的模型来部署在客户端是很复杂的,这需要在迭代的试错过程中付出大量的人力:::(手动设计更高效的体系结构在很大程度上依赖于人类......
  • Peaches: Personalized Federated Learning with Neural Architecture Search in Edge
    背景:介绍联邦学习,参数服务器和workers之间的关系挑战:1.预定义模型:太大的架构可能会导致过度拟合问题和workers不必要的计算开销,而太小的架构可能会导致低训练性能2.数据不可访问:数据不可访问导致不能设计出真正高效的架构在边缘计算中使用FL。需要考虑三种挑战:1.异构数据2......
  • Arena Learning: 构建大语言模型的数据飞轮
    大语言模型(LLMs)正在快速发展,但如何有效评估和持续改进这些模型仍面临巨大挑战。本文提出了一种名为ArenaLearning的创新方法,通过模拟聊天机器人竞技场来构建高效的数据飞轮,从而实现LLMs的持续优化。让我们深入了解这种方法的核心思想和关键技术。1.背景与挑战近年......