通过改变几个参数来运行Elastic Net模拟,并希望将输出系数保存到框架中以供稍后进行可能的审查.

最终希望节省具有两个参数标识符列(即"阿尔法"、"l1_ratio")和许多其他列的框架,以获取与这些参数匹配的模型的所得系数.

"Alpha"是一个浮点数(增量从.1到1000),"l1_ratio"是一个从0到1的浮点数. "coefs"是一个numpy数组,我想将其扩展到每个系数值的单独列中(总数将保持固定,在这个简单的情况下假设为5).

例如:

alpha = .1
l1_ratio = .5
coefs = array([-1.30, -0.45, .04, .65, -0.88])

将导致最终收件箱中的行记录:

    alpha   l1_ratio    c1  c2  c3  c4  c5
0   .1  .5  -1.30   -0.45   .04 .65 -0.88

我最终将循环并 for each 场景放置额外的行. 也不希望手动标记系数列,因为根据情况可能有数十个--将列标题保留为空也可以.

我该怎么做?

推荐答案

我想您将迭代生成所有数据点.然而,DataFrames不喜欢以这种方式增长.重复添加新行的性能很糟糕.

假设将产生新数据点的函数为logic,我会使用字典来收集它们,并最终创建一次DataFrame:

data = {}
for alpha, l1_ratio, coeffs in logic():
    data[(alpha, l1_ratio)] = coeffs

df = (pd.DataFrame(data).T
        .rename(columns=lambda x: f'c{x+1}')
        .rename_axis(['alpha', 'l1_ratio'])
        .reset_index() # optional
      )

生成收件箱的变体:

df = (pd.DataFrame(data.keys(), columns=['alpha', 'l1_ratio'])
        .join(pd.DataFrame(data.values())
                .rename(columns=lambda x: f'c{x+1}'))
      )

示例输出:

   alpha  l1_ratio   c1    c2    c3    c4    c5
0    0.1       0.5 -1.3 -0.45  0.04  0.65 -0.88
1    0.2       0.5 -1.3 -0.45  0.04  0.65 -0.88

Python相关问答推荐

从DataFrame.apply创建DataFrame

GL pygame无法让缓冲区与vertextPointer和colorPointer一起可靠地工作

Pandas 第二小值有条件

ModuleNotFound错误:没有名为Crypto Windows 11、Python 3.11.6的模块

追溯(最近最后一次调用):文件C:\Users\Diplom/PycharmProject\Yolo01\Roboflow-4.py,第4行,在模块导入roboflow中

使用miniconda创建环境的问题

如何从具有不同len的列表字典中创建摘要表?

在Python中动态计算范围

如何设置视频语言时上传到YouTube与Python API客户端

为什么\b在这个正则表达式中不解释为反斜杠

旋转多边形而不改变内部空间关系

将链中的矩阵乘法应用于多组值

Python将一个列值分割成多个列,并保持其余列相同

如何将返回引用的函数与pybind11绑定?

获取git修订版中每个文件的最后修改时间的最有效方法是什么?

高效生成累积式三角矩阵

操作布尔值的Series时出现索引问题

Polars定制函数返回多列

启动线程时,Python键盘模块冻结/不工作

无法在盐流道中获得柱子