当前位置: 首页 > news >正文

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

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 LogisticRegressionmodel = LogisticRegression()

4.2 训练模型

在训练集上训练模型:

model.fit(X_train, y_train)

5. 模型评估

5.1 预测与评估

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

from sklearn.metrics import accuracy_score, classification_report, confusion_matrixy_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 snscm = 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 GridSearchCVparam_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 joblibjoblib.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构建机器学习模型的完整流程,包括数据加载与预处理、模型选择与训练、模型评估、模型优化以及模型的保存和加载。您可以将这些知识应用到其他机器学习任务中,并尝试使用更复杂的数据集和模型,进一步提高机器学习技能。希望本教程能帮助您在数据科学和机器学习领域取得更大进步!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【开源库学习】libodb库学习(一)
  • sourcetree中常用功能使用方法及gitlab冲突解决
  • Git提交到错误分支怎么办?(解决办法)
  • 解决前端开发中的浏览器兼容性问题
  • 区块链技术和系统;ZKRollup ;区块链交易打包和审查
  • IOT 的 10 种常见协议、组网模式、特点及其使用场景浅析
  • 如何判断自己的数据格式适合使用json还是Excel的形式存入neo4j数据库
  • LeYOLO, New Scalable and Efficient CNN Architecture for Object Detection
  • 【STM32】RTT-Studio中HAL库开发教程三:IIC通信--AHT20
  • SQL Server数据库守护者:自定义备份与恢复策略全指南
  • Zabbix介绍和架构
  • Maven 自动化部署
  • 密码学原理精解【9】
  • spring boot(学习笔记第十四课)
  • 7-20FPGA调试日志
  • php的引用
  • [译] React v16.8: 含有Hooks的版本
  • 【刷算法】从上往下打印二叉树
  • CSS中外联样式表代表的含义
  • httpie使用详解
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Javascript基础之Array数组API
  • java小心机(3)| 浅析finalize()
  • leetcode98. Validate Binary Search Tree
  • MySQL QA
  • mysql_config not found
  • php ci框架整合银盛支付
  • PHP的Ev教程三(Periodic watcher)
  • ReactNativeweexDeviceOne对比
  • springboot_database项目介绍
  • 大整数乘法-表格法
  • 关于extract.autodesk.io的一些说明
  • 近期前端发展计划
  • 面试总结JavaScript篇
  • 区块链技术特点之去中心化特性
  • # Panda3d 碰撞检测系统介绍
  • #{}和${}的区别?
  • #NOIP 2014#Day.2 T3 解方程
  • (2)STL算法之元素计数
  • (5)STL算法之复制
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (补充)IDEA项目结构
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (南京观海微电子)——I3C协议介绍
  • (一)插入排序
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET Framework 3.5安装教程
  • .net SqlSugarHelper
  • .net6 webapi log4net完整配置使用流程
  • @vue/cli 3.x+引入jQuery