机器学习入门指南:Jupyter Notebook实战

news2024/11/15 15:36:40

前言

机器学习作为人工智能领域的核心组成,是计算机程序学习数据经验以优化自身算法、并产生相应的“智能化的“建议与决策的过程。随着大数据和 AI 的发展,越来越多的场景需要 AI 手段解决现实世界中的真实问题,并产生我们所需要的价值。

机器学习的建模流程包括明确业务问题、收集及输入数据、模型训练、模型评估、模型决策一系列过程。对于机器学习工程师而言,他们更擅长的是算法、模型、数据探索的工作,而对于工程化的能力则并不是其擅长的工作。除此之外,机器学习过程中还普遍着存在的 IDE 本地维护成本高、工程部署复杂、无法线上协同等问题,导致建模成本高且效率低下。

概述

Jupyter Notebook介绍:

Jupyter Notebook是一个开源的交互式笔记本,支持超过40种编程语言,能够同时包含实时代码、可视化输出和富文本。它非常适合用于数据分析、机器学习建模、科学研究和教育等领域。除了用于交互式数据分析和编程外,Jupyter Notebook还被广泛应用于数据清洗、数据可视化、机器学习模型的训练和部署,甚至作为教学工具。它的灵活性和强大的功能使得它成为了数据科学家、研究人员和工程师们不可或缺的利器。

R Notebook介绍:

R Notebook是基于R语言的交互式笔记本环境,结合了代码、可视化和文档编写的功能。它能够帮助数据科学家和分析师们在同一个环境中进行数据处理、统计建模、可视化和报告撰写等任务。R Notebook提供了交互式的编程环境,用户可以实时执行R代码,并即时看到结果、生成图表。

PySpark Notebook介绍:

PySpark Notebook是一个基于Python语言和Spark框架的交互式笔记本环境。它结合了Python的简洁性和Spark的强大分布式计算能力,使得用户可以在同一个环境中进行大规模数据处理和分析。PySpark Notebook提供了交互式编程环境,用户可以使用Python编写代码,通过Spark进行分布式数据处理、机器学习和图计算等任务。同时,它还支持可视化和文档编写,方便用户进行数据可视化和报告撰写。通过PySpark Notebook,用户可以轻松处理大数据集,实现高性能的分布式数据处理和分析。

C/C++ Notebook介绍:

C/C++ Notebook是一款专为学习和编写C语言程序设计的笔记工具。它集成了代码编辑、笔记记录和即时运行等功能,使用户能够在编写和调试代码的同时记录学习心得和重要知识点。适合初学者和有经验的程序员,用于学习、教学和项目开发。通过C Notebook,用户可以高效地进行代码编写和学习笔记的同步管理。

特征图

图片

示例

接下来展示不同方式实现的Jupyter Notebook代码示例!

Jupyter Notebook读取文件

import subprocessimport pandas as pd
res_list = subprocess.Popen(['ls', '/datasource/testErfenlei'],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()for res in res_list:    print(res.decode())    filenames = res.decode().split()  # 将输出结果按空格分割成文件名列表    for filename in filenames:        if filename == 'erfenl.csv':  # 根据实际文件名来判断            csv_data = pd.read_csv('/datasource/testErfenlei/' + filename)  # 读取CSV文件            print(csv_data)

图片

Jupyter Notebook建模-双曲线图

图片

Jupyter Notebook生成PMML文件1​​​​​​​

from sklearn.datasets import load_irisfrom sklearn.tree import DecisionTreeClassifierfrom sklearn2pmml import PMMLPipeline, sklearn2pmml # 加载iris数据集iris = load_iris() # 训练决策树模型dt = DecisionTreeClassifier()dt.fit(iris.data, iris.target) # 创建PMMLPipeline对象pmml_pipeline = PMMLPipeline([    ("classifier", dt)]) # 导出模型为PMML文件sklearn2pmml(pmml_pipeline, "iris_decision_tree.pmml")

Jupyter Notebook生成PMML文件2​​​​​​​

from sklearn.datasets import load_bostonfrom sklearn.linear_model import LinearRegressionfrom sklearn2pmml import PMMLPipeline, sklearn2pmml # 加载波士顿房价数据集boston = load_boston() # 构建线性回归模型lr = LinearRegression() # 使用 PMMLPipeline 包装模型pipeline = PMMLPipeline([("lr", lr)]) # 使用数据拟合模型pipeline.fit(boston.data, boston.target) # 将模型保存为 PMML 文件sklearn2pmml(pipeline, "linear_regression.pmml")

图片

R Notebook建模 - 散点图​​​​​​​

# 导入所需的库library(ggplot2) # 创建一个数据框df <- data.frame(  x = 1:10,  y = c(3, 5, 6, 8, 9, 10, 11, 13, 14, 15)) # 绘制散点图ggplot(df, aes(x, y)) +  geom_point() +  labs(title="Scatter Plot of X and Y", x="X", y="Y")

R Notebook获取训练数据集​​​​​​​

setwd(dir=”/datasource”)dir()

PySpark Notebook建模​​​​​​​

# 导入所需库from pyspark.sql import SparkSessionfrom pyspark.ml.feature import VectorAssemblerfrom pyspark.ml.regression import LinearRegression from pyspark.ml.evaluation import RegressionEvaluator # 创建 SparkSessionspark = SparkSession.builder.appName("LinearRegression").getOrCreate() # 创建 DataFramedata = [(1.2, 3.4, 5.6), (2.3, 4.5, 6.7), (3.4, 5.6, 7.8), (4.5, 6.7, 8.9)]columns = ["feature1", "feature2", "label"]df = spark.createDataFrame(data, columns) # 将特征列组合到向量中assembler = VectorAssembler(inputCols=["feature1", "feature2"], outputCol="features")df = assembler.transform(df) # 拆分数据集为训练集和测试集train_df, test_df = df.randomSplit([0.7, 0.3], seed=42) # 创建线性回归模型并拟合训练集lr = LinearRegression(featuresCol="features", labelCol="label")model = lr.fit(train_df) # 在测试集上进行预测并计算其平均误差predictions = model.transform(test_df)# mse = predictions.agg({"prediction": "mean_squared_error"}).collect()[0][0]# mse = predictions.agg(mean_squared_error(predictions["label"], predictions["prediction"])).collect()[0][0] evaluator = RegressionEvaluator(predictionCol="prediction", labelCol="label", metricName="mse")mse = evaluator.evaluate(predictions)# 显示结果print(f"Mean Squared Error on Test Set: {mse}") # 停止 SparkSessionspark.stop()

图片

PySpark Notebook建模 -折线图​​​​​​​

# 导入所需库和模块import matplotlib.pyplot as pltfrom pyspark.sql.functions import colfrom pyspark.sql import SparkSession # 创建 SparkSessionspark = SparkSession.builder.appName("LinePlot").getOrCreate() # 创建 DataFramedata = [(1, 2), (2, 4), (3, 7), (4, 8), (5, 9)]columns = ["x", "y"]df = spark.createDataFrame(data, columns) # 提取 x 和 y 列并将其转换为 Pandas 数据框pandas_df = df.select("x", "y").orderBy("x").toPandas() # 绘制折线图plt.plot(pandas_df["x"], pandas_df["y"]) # 添加标题和轴标签plt.title("Line Plot")plt.xlabel("X")plt.ylabel("Y") # 显示图形plt.show() # 停止 SparkSessionspark.stop()

图片

C语言Notebook 建模

#include <stdio.h> int main() {    int arr[] = {3, 7, 1, 9, 5};    int size = sizeof(arr) / sizeof(arr[0]);     // 找到最大值,以便缩放柱状图    int max_value = arr[0];    for (int i = 1; i < size; i++) {        if (arr[i] > max_value) {            max_value = arr[i];        }    }     // 打印柱状图    printf("Bar chart:\n");    for (int i = max_value; i > 0; i--) {        for (int j = 0; j < size; j++) {            if (arr[j] >= i) {                printf("* ");            } else {                printf("  ");            }        }        printf("\n");    }     // 打印横轴标签    for (int i = 0; i < size; i++) {        printf("%d ", arr[i]);    }    printf("\n");     return 0;}

图片

C++Notebook 建模

#include <iostream>using namespace std;
int f1(){std::cout <<"hello world1\n";return 1;}int a = 110;cout << f1() << endl;cout <<1010<<endl;

图片

PytorchNotebook建模

import torchimport torch.nn as nnimport torch.optim as optim # 定义一个简单的神经网络模型class SimpleNet(nn.Module):    def __init__(self, input_size, hidden_size, output_size):        super(SimpleNet, self).__init__()        self.fc1 = nn.Linear(input_size, hidden_size)        self.relu = nn.ReLU()        self.fc2 = nn.Linear(hidden_size, output_size)     def forward(self, x):        out = self.fc1(x)        out = self.relu(out)        out = self.fc2(out)        return out # 准备数据input_size = 10hidden_size = 20output_size = 5batch_size = 32 input_data = torch.randn(batch_size, input_size)target_data = torch.randn(batch_size, output_size) # 实例化模型model = SimpleNet(input_size, hidden_size, output_size) # 定义损失函数和优化器criterion = nn.MSELoss()optimizer = optim.SGD(model.parameters(), lr=0.1) # 训练模型num_epochs = 100for epoch in range(num_epochs):    # 前向传播    output = model(input_data)    loss = criterion(output, target_data)     # 反向传播和优化    optimizer.zero_grad()    loss.backward()    optimizer.step()     # 打印训练信息    if (epoch+1) % 10 == 0:        print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))

图片

TensorFlowNotebook建模​​​​​​​

import tensorflow as tf # 检查是否有可用的GPU设备if tf.test.is_gpu_available():    print('GPU 设备可用')else:    print('GPU 设备不可用') # 创建一个简单的神经网络模型model = tf.keras.models.Sequential([    tf.keras.layers.Dense(64, activation='relu', input_shape=(784,)),    tf.keras.layers.Dense(64, activation='relu'),    tf.keras.layers.Dense(10, activation='softmax')]) # 准备数据(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data() # 数据预处理x_train = x_train.reshape(-1, 784).astype('float32') / 255.0x_test = x_test.reshape(-1, 784).astype('float32') / 255.0y_train = tf.keras.utils.to_categorical(y_train, num_classes=10)y_test = tf.keras.utils.to_categorical(y_test, num_classes=10) # 编译模型model.compile(optimizer='adam',              loss='categorical_crossentropy',              metrics=['accuracy']) # 在GPU上训练模型with tf.device('/GPU:0'):    model.fit(x_train, y_train, batch_size=128, epochs=10, validation_split=0.2) # 在GPU上评估模型with tf.device('/GPU:0'):    test_loss, test_acc = model.evaluate(x_test, y_test)    print('Test accuracy:', test_acc)

图片

总结

在这个数据驱动的时代,机器学习已经成为了帮助我们解决复杂问题和实现智能化决策的关键工具。而本指南中的Jupyter Notebook实战将带你踏上一段精彩而充满挑战的旅程。通过深入学习和实践,你将掌握从数据清理、特征提取到模型训练和评估的全套流程。不仅如此,Jupyter Notebook作为交互式开发环境,将激发你的创造力和探索精神,让你能够灵活地调试和优化模型。

无论你是初学者还是已经有一定经验的专业人士,这个指南都将帮助你提升技能、拓宽视野,并在机器学习领域迈出坚实的步伐。现在就加入我们,一起探索机器学习的无限可能吧!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

eDNA热门应用案例一网打尽

一份环境样品中&#xff0c;可包含的DNA片段能达到上千万个&#xff0c;而每一个物种能携带的DNA又是独一无二的。将从样品中获得的遗传标记序列与DNA数据库中的序列相比对&#xff0c;从而确认分析的DNA来自什么物种&#xff0c;这就是环境DNA宏条形码技术&#xff08;eDNA Me…

拼多多商品详情商品标题sku等信息抓取接口API调用步骤演示

接口名称&#xff1a;item_get_app_pro 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_sho…

低代码的原理、发展历史、使用场景和优势。

在数字化转型的浪潮中&#xff0c;低代码开发平台&#xff08;YDUIbuilder&#xff09;以其独特的优势迅速崛起&#xff0c;为各行各业带来了创新的解决方案。本文将深入探讨低代码的原理、发展历史、使用场景以及它所带来的优势。 gitee下载&#xff1a;yduibuilder: 快速开发…

Spring AOP失效的场景事务失效的场景

场景一&#xff1a;使用this调用被增强的方法 下面是一个类里面的一个增强方法 Service public class MyService implements CommandLineRunner {private MyService myService;public void performTask(int x) {System.out.println("Executing performTask method&quo…

LeetCode题练习与总结:将有序数组转换为二叉搜索树--108

一、题目描述 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵平衡二叉搜索树。 示例 1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9] 输出&#xff1a;[0,-3,9,-10,null,5] 解释&#xff1a;[0,-10,5,null,-3,null,9] 也将…

流程引擎之compileflow idea 2024.*插件支持

之前有使用过多种类型工作流&#xff0c;但最近研究工作流引擎对比各有优劣&#xff0c;compileflow内存支持性能不错&#xff0c;但在idea新版本使用的时候发现插件不支持&#xff0c;干脆自己修改源码手撸一个&#xff08;当前版本2024.1验证可用&#xff0c;如果有其他版本不…

Vue框架动态引入省份个性化代码

项目需求有产品的功能&#xff0c;但是功能下部分小功能每个省份有不同的控制&#xff0c;所以需要引入省份个性化代码。 思路是&#xff0c;页面一开始加载产品化的代码&#xff0c;有个性化的代码就加载个性化的逻辑&#xff0c;个性化代码是产品化代码的重写&#xff0c;所…

QT如何将生成的exe文件打包成安装包

一、生成exe文件 1、生成exe文件 QT编译模式选择release&#xff0c;然后点击编译&#xff1a; 2、找到exe文件 在开发文件夹下找到build-xxxxxxx-Release文件夹里面找到exe文件 3、相关依赖dll文件查找 新建个空文件夹将exe文件拷贝进去&#xff1a; 然后找到如下程序…

数据结构-二叉树系统性学习(四万字精讲拿捏)

前言 这里我会从二叉树的概念开始讲解&#xff0c;其次涉及到概念结构&#xff0c;以及堆的实现和堆排序。 目的是&#xff0c;堆比二叉树简单&#xff0c;同时堆本质上是二叉树的其中一种情况&#xff0c;堆属于二叉树顺序结构的实现 最后完善二叉树的讲解&#xff0c;也就是…

SpringBoot 结合 WebSocket 实现聊天功能

目录 一、WebSocket 介绍 二、源码 2.1 pom.xml 2.2 WebSocket配置类&#xff0c;用于配置WebSocket的相关设置 2.3 自定义WebSocket处理器类&#xff0c;用于处理WebSocket的生命周期事件 2.4 自定义WebSocket握手拦截器&#xff0c;用于增强WebSocket的握手过程 2.5 Ses…

网络编程-TCP

一、TCP的相关IP 1.1 SeverSocket 这是Socket类,对应到网卡,但是这个类只能给服务器使用. 1.2 Socket 对应到网卡,既可以给服务器使用,又可以给客户端使用. TCP是面向字节流的,传输的基本单位是字节. TCP是有连接的,和打电话一样,需要客户端拨号,服务器来听. 服务器的内核…

夏日将至,给手机装个“液冷”降温可行吗?

夏天出门在外&#xff0c;手机总是更容易发热&#xff0c;尤其是顶着大太阳用手机的时候&#xff0c;更是考验手机的散热能力。如果你也是一个对手机体验有追求的人&#xff0c;比较在意手机的温度&#xff0c;那么可以考虑入手一个微泵液冷手机壳。 【什么是微泵液冷壳&#…

mybatisplus填充公共字段MetaObjectHandler后不生效解决方式

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component;import java.util.Date;/*** 拦截处理公共字…

高清短视频:四川京之华锦信息技术公司

高清短视频&#xff1a;视觉盛宴与时代的脉搏 在数字化时代&#xff0c;短视频已成为人们生活中不可或缺的一部分。其中&#xff0c;高清短视频以其卓越的画质和精彩的内容&#xff0c;成为了人们追求视觉享受的首选。四川京之华锦信息技术公司将从高清短视频的定义、特点、影…

简单微信企业群消息推送接口

群管理 群发送接口 POST: JSONURL http://localhost:65029/m/wxapi/sendwxmsg{ "nr":"试", --消息 "at":"wxid_y0k4dv0xcav622,wxid_y0k4dv0xcav622",--群wxid "key":"F98F354F1671A2D21BC78C76B95E96EB",--群k…

设计软件有哪些?建模和造型工具篇(2),渲染100邀请码1a12

之前介绍了一批建模工具&#xff0c;这次我们继续介绍。 1、Forest Pack Forest Pack是由iToo Software公司开发的3ds Max插件&#xff0c;专门用于创建大规模自然环境。它提供了丰富的植被和物体库&#xff0c;用户可以快速创建树木、植物、岩石等元素&#xff0c;并将它们分…

迭代器模式(行为型)

目录 一、前言 二、迭代器模式 三、总结 一、前言 迭代器模式(Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;提供一种方法顺序访问一个聚合对象中各个元素&#xff0c;而又不暴露该对象的内部表示。总的来说就是分离了集合对象的遍历行为&#xff0c;抽象出…

AutoCAD Electrical电气版 2018 2019 2020 20212022远程安装服务

购买流程&#xff1a; ①进店沟通需求 ②协商服务内容 ③拍下订单 ④远程安装服务 常用版本2015&#xff0c;2016&#xff0c;2018&#xff0c;2019&#xff0c;2020&#xff0c;2021&#xff0c;2022。 适用&#xff1a;WIN 7/8/10/11系统用户购买 系统支持推荐 WIN7&…

【数据分析面试】54.员工信息(HR)数据库搭建

题目 由于发展需求&#xff0c;进一步提高公司人员统筹管理的能力&#xff0c;公司决定要重新升级人力数据管理系统。 现在&#xff0c;你的任务是为公司重新设计和搭建一个员工信息数据库。 提示&#xff1a;考虑HR管理系统的功能&#xff0c;比如人员信息、入职时间、离职…

shell脚本【免交互】

目录 1. Here Document 免交互 1.1 Here Document概述 1.2 实验操练 1.3 tee命令 ​1.4 变量替换 ​ 2. expect 免交互 2.2 实验操练 1. Here Document 免交互 1.1 Here Document概述 *使用I/O重定向的方式将命令列表提供给交互式程序或命令&#xff0c;比如 ftp、…