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

前言

机器学习作为人工智能领域的核心组成,是计算机程序学习数据经验以优化自身算法、并产生相应的“智能化的“建议与决策的过程。随着大数据和 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作为交互式开发环境,将激发你的创造力和探索精神,让你能够灵活地调试和优化模型。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

引力为什么会让时间变慢,给你通俗的解读

爱因斯坦的狭义相对论表明&#xff0c;速度会让时间变慢&#xff0c;速度越快时间就越慢。而广义相对论告诉我们&#xff0c;引力同样会让时间变慢&#xff0c;引力越强时间就越慢。 时间膨胀 速度对时间的影响就先不解释了&#xff0c;之前的科普文章介绍了很多&#xff0c;今…

【C++】从零开始map与set的封装

送给大家一句话&#xff1a; 今日的事情&#xff0c;尽心、尽意、尽力去做了&#xff0c;无论成绩如何&#xff0c;都应该高高兴兴地上床恬睡。 – 三毛 《亲爱的三毛》 &#x1f303;&#x1f303;&#x1f303;&#x1f303;&#x1f303;&#x1f303;&#x1f303;&#x…

看潮成长日程表用户手册(下)

看潮成长日程表用户手册&#xff08;下&#xff09; 四、基础设置1、系统用户设置2、成长学员设置3、自然期间定义4、时间表版本设置5、学员期间设置6、时间表时段设置7、年度假日维护 五、参数设置1、颜色参数设置2、逻辑参数设置3、数值参数设置4、字符参数设置5、列表输入项…

【二分查找 位运算】3145. 大数组元素的乘积

本文涉及知识点 二分查找算法合集 位运算、状态压缩、枚举子集汇总 LeetCode3145. 大数组元素的乘积 一个整数 x 的 强数组 指的是满足和为 x 的二的幂的最短有序数组。比方说&#xff0c;11 的强数组为 [1, 2, 8] 。 我们将每一个正整数 i &#xff08;即1&#xff0c;2&am…

c语言从入门到函数速成(完结篇)

哈喽&#xff0c;小伙伴们大家好呀&#xff0c;本篇文章是这个系列的完结篇&#xff0c;希望大家看完后能有所收获哦 首先能看到这里的同学&#xff0c;一定也是自觉性比较强的了&#xff0c;我会在文章末尾给大家发点小福利 那么&#xff0c;我们先来通过数学中的函数来引入一…

医学中脑机接口技术的未来

医学中脑机接口技术的未来 李升伟 编译 对非侵入性脑机接口&#xff08;而不是植入物&#xff09;日益增长的兴趣可能会提高患者的易使用性&#xff0c;但分辨率需要提高。 图片来源&#xff1a;Denis Pobytov / DigitalVision Vectors / Getty 全球范围内正在展开一场争夺利用…

云服务器购买之后到部署项目的流程

1.通过账号密码登录百度智能云控制台; 2.进入对应的服务器‘云服务器BBC’ 找到’实例‘即找到对应的服务器列表; 此时通过本地电脑 1.cmd命令提示符 PING 服务器公网地址不通&#xff1b; 2.通过本地电脑进行远程桌面连接不通 原因&#xff1a;没有关联安全组&#xff0c;或者…

测试基础02:软件开发流程及模型、敏捷开发

1、软件开发流程 包括&#xff1a;项目开发目的分析与确定、需求分析、设计、编程、软件测试、软件交付、验收和维护。 2、软件开发模型 2.1 定义 软件开发模型(Software Development Model)是软件开发全过程的框架&#xff0c;规定了软件开发过程中各项活动的基本步骤、任务…

InteractiveGraph图谱中vue项目中如何使用

InteractiveGraph图谱中vue项目中如何使用 一、下载js和css和字体二、vue2.0项目中引用三、grap组件 一、下载js和css和字体 //在这里面找 https://github.com/grapheco/InteractiveGraph/blob/master/dist/examples/example1.html二、vue2.0项目中引用 //main.js中全局引入$ …

驱动开发中引入私有数据的原因

系列文章目录 驱动开发中引入私有数据的原因 驱动开发中引入私有数据的原因 系列文章目录驱动开发中引入私有数据的原因 驱动开发中引入私有数据的原因 驱动开发中引入私有数据&#xff08;Private Data&#xff09;概念主要是为了解决以下几个关键问题&#xff1a; 1.多设备支…

Docker环境安装并使用Elasticsearch

1、拉取es docker pull elasticsearch:7.10.12、查看镜像 docker images3、启动es docker run -d --name esearch -p 9200:9200 -p 9300:9300 elasticsearch:7.10.14、如果启动ES时出现一下问题 Unable to find image docker.elastic.co/elasticsearch/elasticsearch:7.10.…

从Python代码到pip包:打包Python项目

大家好&#xff0c;在软件开发的世界中&#xff0c;共享和重用代码是至关重要的。Python社区为我们提供了丰富的资源&#xff0c;使得我们能够轻松地与他人分享我们的工作&#xff0c;并从他人的工作中受益。将代码打包成pip包&#xff08;Python包管理器&#xff09;是一种常见…

SpringCloudAlibaba:6.2RocketMQ的普通消息的使用

简介 普通消息也叫并发消息&#xff0c;是发送效率最高&#xff0c;使用最多的一种 依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSch…

Web上机:JSP+Servlet+JDBC的交互流程

目录 需求与设计 基础需求&#xff1a; 项目结构&#xff1a; 项目逻辑&#xff1a; 运行图示&#xff1a; 代码实现 Login.jsp InsertServlet SelectServlet Table.jsp user mysql表结构 Web开发技术迭代速度日新月异&#xff0c;对于技术的更新往往是基于底层一…

Kubernetes核心组件Ingress详解

1.1 Ingress介绍 Kubernetes 集群中&#xff0c;服务&#xff08;Service&#xff09;是一种抽象&#xff0c;它定义了一种访问 Pod 的方式&#xff0c;无论这些 Pod 如何变化&#xff0c;服务都保持不变。服务可以被映射到一个静态的 IP 地址&#xff08;ClusterIP&#xff09…

element ui 的el-input输入一个字后失去焦点,需重新点击输入框才能再次输入!

解决方案&#xff1a; 我是form表单嵌套表格&#xff0c;里面的el-input输入框&#xff0c;输入第一个值的时候会突然失去焦点&#xff0c;需要再次点击输入框才能正常输入&#xff0c;原因是table的key值&#xff0c;需要改成正常的index即可&#xff0c;如果你是循环的&…

精益生产培训公司:为企业量身定制的精益解决方案——张驰咨询

在当今竞争激烈的市场环境下&#xff0c;企业要想持续发展&#xff0c;就必须不断寻求转型升级的途径。精益生产作为一种高效的生产管理方式&#xff0c;已经成为众多企业追求的目标。而精益生产培训公司&#xff0c;正是帮助企业实现这一目标的重要力量。 一、精益生产培训的…

Kubernetes可视化界面之DashBoard

1.1 DashBoard Kubernetes Dashboard 是 Kubernetes 集群的一个开箱即用的 Web UI&#xff0c;提供了一种图形化的方式来管理和监视 Kubernetes 集群中的资源。它允许用户直接在浏览器中执行许多常见的 Kubernetes 管理任务&#xff0c;如部署应用、监控应用状态、执行故障排查…

WPF中CommandParameter用法

1. 界面样式 2. XAML中代码部分 <ButtonGrid.Row"0"Grid.Column"1"Command"{Binding BtnClick_Number}"CommandParameter"7"Content"7"Style"{StaticResource BtnStyle_Num}" /> <ButtonGrid.Row"…

产品经理-需求收集(二)

1. 什么是需求 指在一定的时期中&#xff0c;一定场景中&#xff0c;无论是心理上还是生理上的&#xff0c;用户有着某种“需要”&#xff0c;这种“需要”用户自己不一定知道的&#xff0c;有了这种“需要”后用户就有做某件事情的动机并促使达到其某种目的&#xff0c;这也就…