首页 > 编程问答 >创建具有标量特征和 N 维坐标向量特征的机器学习 Numpy 数组

创建具有标量特征和 N 维坐标向量特征的机器学习 Numpy 数组

时间:2024-07-24 05:35:29浏览次数:14  
标签:python numpy machine-learning feature-engineering

我正在尝试为 ML 程序格式化我的数据。有 33,000 个事件,每个事件有 3 个我想考虑的东西:质量、能量、坐标。

质量的形状为 (33000,),看起来像: [188.9 189.0 125.7 ... 127.4 201.0 210.1] 。 能量也是 (33000,) 并且看起来相同:[1 2 3 ... 8 9 10]。然后,我还有一个形状为 (33000,10) 的 10 维坐标向量

每个坐标都是包含 10 个坐标点的 10 维向量:

坐标数组:

    [[19.9 613.0 6.5 127.4 486.4 54.3 194.0 19.4 194.0 32.3]
    [1.89 1.01 4.9 ... 2.3 2.3 2.3]
    [1.2 6.1 4.0 ... 1.7 1.7 1.7]
    ...
    ]

我想将它们输入机器学习程序。但是,我不想创建一个将 10 维坐标压缩为一组平面浮点值的数组,如下所示:

  [188.9 1 19.9 613.0 6.5 127.4 486.4 54.3 194.0 19.4 194.0 32.3\]
  [189.0 2 1.89 1.01 4.9 ... 2.3 2.3 2.3\]
  ...

这会丢失最后 10 个值本质上联系在一起的信息,因为它们是一个坐标。相反,我想创建一个在数组中间有一个向量的 numpy 数组

  [188.9 1 [19.9 613.0 6.5 127.4 486.4 54.3 194.0 19.4 194.0 32.3]]
  [189.0 2 [1.89 1.01 4.9 ... 2.3 2.3 2.3]]
  ...

这样机器学习程序就知道将坐标向量视为它自己的特征,而不是一组不同的特征。所以实际的形状可能是 (33000,3) 而不是 (33000,13) 这可能吗?

我尝试过 dstack、concatenate、stack 等。所有这些都存在“轴必须完全匹配”的问题。 就我而言,轴不匹配。一个特征的轴为 10,而其他特征要么没有轴 (33000,),要么只有 1 个轴 (33000,1)(如果强制它有轴)。我不确定是否缺少一个 numpy 数组事实,或者这是否不可能。


不能拥有具有不同大小元素的 numpy 数组,想要达成的目标是创建一个数据结构,其中每个事件都是一个列表,并且列表中的每个元素都是特征。

可以使用列表推导来实现这一点:

import numpy as np

mass = np.array([188.9, 189.0, 125.7, 127.4, 201.0, 210.1])
energy = np.array([1, 2, 3, 8, 9, 10])
coordinates = np.array([
    [19.9, 613.0, 6.5, 127.4, 486.4, 54.3, 194.0, 19.4, 194.0, 32.3],
    [1.89, 1.01, 4.9, 2.3, 2.3, 2.3, 1.2, 3.4, 5.6, 7.8],
    [1.2, 6.1, 4.0, 1.7, 1.7, 1.7, 2.1, 4.3, 6.5, 8.7],
    [1.2, 6.1, 4.0, 1.7, 1.7, 1.7, 2.1, 4.3, 6.5, 8.7],
    [1.2, 6.1, 4.0, 1.7, 1.7, 1.7, 2.1, 4.3, 6.5, 8.7],
    [1.2, 6.1, 4.0, 1.7, 1.7, 1.7, 2.1, 4.3, 6.5, 8.7]
])

# 创建一个包含所有事件的列表
events = [
    [mass[i], energy[i], coordinates[i]] for i in range(len(mass))
]

print(events)

这将为提供一个列表,其中每个事件都被表示为一个三元素列表,其中包含质量、能量和坐标向量:

[[188.9, 1, array([ 19.9, 613. ,   6.5, 127.4, 486.4,  54.3, 194. ,  19.4, 194. , 32.3])],
 [189.0, 2, array([1.89, 1.01, 4.9 , 2.3 , 2.3 , 2.3 , 1.2 , 3.4 , 5.6 , 7.8 ])],
 [125.7, 3, array([1.2, 6.1, 4. , 1.7, 1.7, 1.7, 2.1, 4.3, 6.5, 8.7])],
 [127.4, 8, array([1.2, 6.1, 4. , 1.7, 1.7, 1.7, 2.1, 4.3, 6.5, 8.7])],
 [201.0, 9, array([1.2, 6.1, 4. , 1.7, 1.7, 1.7, 2.1, 4.3, 6.5, 8.7])],
 [210.1, 10, array([1.2, 6.1, 4. , 1.7, 1.7, 1.7, 2.1, 4.3, 6.5, 8.7])]]

此表示形式保留了坐标向量的结构,并且大多数机器学习库可以轻松处理此类数据。 可以轻松地将其传递给机器学习模型。

标签:python,numpy,machine-learning,feature-engineering
From: 78785643

相关文章

  • 如何在Python中计算小数?
    我正在创建一个计算器来用python计算企业的利润,但到目前为止我只能使用整数。这是我的代码示例:Gross=int(input("PleaseentertotalGrossRevenuefortheFiscalYear"))NetTaxes=int(Gross)*0.1所以我将会计年度的总收入乘以按“税率”计算,但我只能使用......
  • Numpy:将掩码应用于值,然后取平均值,但并行
    我有一个1dnumpy值数组:v=np.array([0,1,4,0,5])此外,我有一个2dnumpy布尔掩码数组(在生产中,有数百万个掩码):m=np.array([[True,True,False,False,False],[True,False,True,False,True],[True,True,True,True,True],])我想将......
  • 如何使用 Python 打开 Google Firestore 上的特定数据库?
    我正在使用Firebase并使用以下代码从Firestore设置/检索文档:importfirebase_adminfromfirebase_adminimportcredentials,firestorecred=credentials.ApplicationDefault()firebase_admin.initialize_app(cred,options={"projectId":"huq-jimbo"})fires......
  • 如何使用 Python 和 Numpy 重现 Matlab 文件读取以解码 .dat 文件?
    我有一个Matlab脚本,可以读取编码的.dat文件,对其进行解码并保存。我试图使用numpy将其转换为Python。我发现对于同一个文件,我得到不同的输出结果(python数字没有意义)。该代码最初作为从串行端口读取的脚本的一部分运行,因此是数据的结构。我首先认为位移是问题所在,因为......
  • 在Python中调整pdf页面大小
    我正在使用python裁剪pdf页面。一切正常,但如何更改页面大小(宽度)?这是我的裁剪代码:input=PdfFileReader(file('my.pdf','rb'))p=input.getPage(1)(w,h)=p.mediaBox.upperRightp.mediaBox.upperRight=(w/4,h)output.addPage(p)当我裁剪页面时,我也需要......
  • 如何使用 python 更改资源管理器窗口中的路径?
    没有人知道如何在不使用python打开新实例的情况下更改资源管理器窗口中的当前路径吗?例如,如果用户使用C:\Users\User打开资源管理器窗口。然后我必须将该路径更改为C:\Windows\System32例如。提前致谢。很遗憾,无法直接使用Python更改现有文件资源管理器窗口的......
  • python 以及将数组传递给函数的问题
    我需要求解一些常微分方程$\frac{dy}{dx}=f(x)=x^2ln(x)$并继续在限制0之间创建数组xpt。<=xpt<=2因为我必须小心xpt=0,所以我将函数定义如下deff(x):ifx<=1.e-6:return0.else:returnnp.square(x)*np.log(x)我的调用程序读取Np......
  • 如果 Python 脚本正在使用文件夹,如何在文件资源管理器中进行更改时防止 Windows 的“
    我有一个简单的脚本,显示在QTreeView中的QListView中选择的目录的内容,我想添加打开文件资源管理器的功能,以让用户编辑目录内的内容。但是,添加新的文件夹和文件可以,但删除或移动文件夹或文件会提示“文件夹正在使用”错误:此操作无法完成,因为该文件已在另一个程......
  • 如何使用 Python API 获取每个模型的活跃用户列表、最后登录信息
    我想通过PythonAPI获取我的dbt项目的所有模型中的活动或非活动用户列表。这可能吗?我尝试列出模型,但无法获取用户信息,如用户名、项目、以及上次活动或上次登录。不幸的是,dbt本身并不跟踪你所寻找的用户活动数据(最后登录、活跃用户等)。dbt的主要功能是转换数据,而不......
  • Python tkinter 窗口不断关闭,我不知道为什么
    我正在尝试制作一个有趣的小程序,其中每小时左右就会有一只毛茸茸的动物走过屏幕。我有一个主窗口,它启动一个循环,每小时左右播放一次动画/声音,但是在口袋妖怪第一次完成行走后,整个程序就会结束。我认为这可能与我设置tkinter窗口的方式有关,但我无法弄清楚。我认为在这里包含......