首页
/ Azure机器学习实践:使用R/Python/Excel生成合成数据

Azure机器学习实践:使用R/Python/Excel生成合成数据

2025-06-26 20:08:44作者:谭伦延

实验概述

在Azure机器学习项目中,数据准备是构建有效模型的关键第一步。本实验将指导您使用多种工具生成合成数据集,为后续的机器学习实验做好准备。我们将重点介绍三种主要方法:Microsoft Excel、R语言和Python语言,以及如何将生成的数据存储在Azure SQL数据库和Azure Blob存储中。

实验目标

  1. 掌握使用不同工具生成合成数据的方法
  2. 了解如何在Azure平台上存储和管理数据
  3. 为后续机器学习实验准备基础数据集
  4. 熟悉数据生成的基本原理和方法

实验准备

在开始实验前,请确保您已具备以下环境:

  • 已安装RStudio或类似R开发环境
  • 已安装Python环境(推荐使用Anaconda)
  • 已安装Microsoft Excel
  • 具备访问Azure SQL数据库和Azure存储账户的权限
  • 已安装SQL Server管理工具

数据生成原理

我们将基于最简单的数学函数f(x)=y生成数据,即对于任何数值x,函数返回相同的y值。例如:

  • f(5)=5
  • f(-10)=-10
  • f(1.4)=1.4

当x取值1到30时,我们得到y值也是1到30。如果在坐标系中绘制这些点,将得到一条完美的直线。为了模拟真实世界中的数据,我们会为y值添加一些随机噪声,使数据点不完全在直线上。

数据生成方法

方法一:使用Microsoft Excel

  1. 创建新工作簿,在第一行输入列名:x、y、noise、x、","、ywnoise
  2. 在x列生成1到30的序列
  3. 将x列复制到y列
  4. 使用公式=IF(RANDBETWEEN(0,1), -1 * RAND(), RAND())生成-1到1之间的随机噪声
  5. 创建ywnoise列,公式为=D2+C2*2,即y值加上两倍噪声
  6. 最终得到包含噪声的线性数据

方法二:使用R语言

  1. 在RStudio中创建新脚本
  2. 使用以下代码生成数据:
x <- seq(1, 30)
y <- x
noise <- runif(30, -1, 1)
ywnoise <- y + noise * 2
plot(x, ywnoise)
linoise <- cbind(x, ywnoise)
write.csv(linoise, "linoise.csv", row.names = FALSE)
  1. 运行脚本将生成CSV文件和对应的数据图

方法三:使用Python

  1. 在Spyder或类似IDE中创建新脚本
  2. 使用以下代码生成数据:
import numpy as np
import matplotlib.pyplot as plt
import csv
from itertools import izip

x = range(1, 31)
y = x
noise = np.random.uniform(-1, 1, 30)
ywnoise = y + noise * 2
plt.plot(x, ywnoise)
plt.show()

with open('linoise.csv', 'wb') as f:
    writer = csv.writer(f)
    writer.writerow(['x', 'ywnoise'])
    writer.writerows(izip(x, ywnoise))
  1. 运行脚本将生成CSV文件并显示数据图

数据存储方案

方案一:Azure SQL数据库

  1. 创建Azure SQL数据库并配置防火墙规则
  2. 使用SQL Server管理工具连接数据库
  3. 执行以下TSQL脚本创建表并插入数据:
CREATE TABLE synth_data (
    x int, 
    ywnoise float
);
CREATE CLUSTERED INDEX i1 ON dbo.synth_data(x);

WITH Seq as (
    SELECT TOP (30) x = CONVERT(INT, ROW_NUMBER() OVER (ORDER BY s1.[object_id])) 
    FROM sys.all_objects AS s1 CROSS JOIN sys.all_objects AS s2
)

INSERT INTO synth_data
SELECT x, x + (RAND(convert(varbinary, newid())) * 2) - 1 as ywnoise FROM Seq

方案二:Azure Blob存储

  1. 创建Azure存储账户并记录访问密钥
  2. 使用Azure Storage Explorer工具连接存储账户
  3. 创建Blob容器
  4. 上传之前生成的CSV文件
  5. 获取文件URL(需要访问密钥才能访问)

其他数据源

除了自行生成数据外,Azure机器学习工作室还提供了多种预加载的数据集,这些数据集来自权威机构如加州大学欧文分校机器学习库(UCI)。在开始机器学习项目前,建议先浏览这些现成的数据集,可能会找到适合您需求的数据。

实验总结

通过本实验,您已经掌握了:

  1. 使用Excel、R和Python生成合成数据的方法
  2. 数据存储到Azure SQL数据库和Blob存储的技术
  3. 为机器学习实验准备基础数据的能力

这些技能将为后续的Azure机器学习实验打下坚实基础。在接下来的实验中,我们将使用这些生成的数据来构建和测试机器学习模型。

登录后查看全文
热门项目推荐