写点什么

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

  • 2024-06-21
    浙江
  • 本文字数:4962 字

    阅读完需:约 16 分钟

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

1、前言  


机器学习作为人工智能领域的核心组成,是计算机程序学习数据经验以优化自身算法、并产生相应的“智能化的“建议与决策的过程。随着大数据和 AI 的发展,越来越多的场景需要 AI 手段解决现实世界中的真实问题,并产生我们所需要的价值。机器学习的建模流程包括明确业务问题、收集及输入数据、模型训练、模型评估、模型决策一系列过程。对于机器学习工程师而言,他们更擅长的是算法、模型、数据探索的工作,而对于工程化的能力则并不是其擅长的工作。除此之外,机器学习过程中还普遍着存在的 IDE 本地维护成本高、工程部署复杂、无法线上协同等问题,导致建模成本高且效率低下。


2、概述


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,用户可以高效地进行代码编写和学习笔记的同步管理。


3、特征图



4、示例接下来展示不同方式实现的 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 建模 - 散点图

# 导入所需的库import numpy as npimport pandas as pdimport matplotlib.pyplot as plt # 创建一个数组x = np.linspace(0, 10, num=100) # 计算正弦和余弦值sin_values = np.sin(x)cos_values = np.cos(x) # 将数据存储在 Pandas 数据帧中df = pd.DataFrame({'x': x, 'sin': sin_values, 'cos': cos_values}) # 绘制正弦和余弦曲线plt.plot('x', 'sin', data=df, label='sin(x)')plt.plot('x', 'cos', data=df, label='cos(x)') # 添加图例和标题plt.legend()plt.title('Sine and Cosine Curves') # 显示图形plt.show()
复制代码

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()))
复制代码




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)
复制代码


5.总结

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


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

用户头像

云数据智能操作系统领军者 2022-12-05 加入

浙江数新网络有限公司是一家拥抱开源,专注于云数据平台的大数据服务商,致力于结合全球云数仓先进理念,打造适合中国落地路径的云数仓体系。

评论

发布
暂无评论
机器学习入门指南:Jupyter Notebook实战_前端_数新网络官方账号_InfoQ写作社区