如何修复在 python 中读取 CSV 文件时形状未对齐的问题

发布于 2025-01-11 19:40:48 字数 1249 浏览 0 评论 0原文

我正在尝试从 Python 中的 CSV 文件导入数据集,但它显示“形状未对齐”错误。我想知道是否有人知道如何解决这个问题。

这是我的代码

import numpy as np
from numpy import genfromtxt

x = genfromtxt('problem1.csv', delimiter=',')

def model(x,w):
    a = w[0] + np.dot(x.T,w[1:])
    return a.T

#define sigmoid function
def sigmoid(t):
    return 1/(1 + np.exp(-t))

#the convex cross-entropy cost function
def cross_entrypy(w):

    #compute sigmoid of model
    a = sigmoid(model (x,w))

    #compute cost of label 0 points
    ind = np.argwhere (y == 0) [:,1]
    cost = -np.sum(np.log(1 - a[:,ind]))

    #add cost on label 1 points
    ind = np.argwhere(y==1)[:,1]
    cost -= np.sum(np.log(a[:,ind]))

    #compute cross-entropy
    return cost/y.size

print(cross_entrypy([3,3]))

,这是我的数据集,看起来像

在此处输入图像描述

这是我收到的错误消息 输入图片此处描述

--update--

在此处输入图像描述

这是数据集用于的练习题

I'm trying to import a dataset from CSV file in Python, but it showed an error of "shapes not aligned". I wonder if anyone knows how to solve this.

here is my code

import numpy as np
from numpy import genfromtxt

x = genfromtxt('problem1.csv', delimiter=',')

def model(x,w):
    a = w[0] + np.dot(x.T,w[1:])
    return a.T

#define sigmoid function
def sigmoid(t):
    return 1/(1 + np.exp(-t))

#the convex cross-entropy cost function
def cross_entrypy(w):

    #compute sigmoid of model
    a = sigmoid(model (x,w))

    #compute cost of label 0 points
    ind = np.argwhere (y == 0) [:,1]
    cost = -np.sum(np.log(1 - a[:,ind]))

    #add cost on label 1 points
    ind = np.argwhere(y==1)[:,1]
    cost -= np.sum(np.log(a[:,ind]))

    #compute cross-entropy
    return cost/y.size

print(cross_entrypy([3,3]))

here is my dataset looks like

enter image description here

This is the error message I received
enter image description here

--update--

enter image description here

This is the practice question where the dataset is use for

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深巷少女 2025-01-18 19:40:48

数组维度

我不确定您的数据集的含义是什么,但是 x 的形状为 (11,2)w 的形状为 <代码>(1,)。

错误来源

从您的屏幕截图来看,错误位于 np.dot(xT,w[1:]) 中。由于维度不匹配,您无法对 xTw[1:] 进行点积。

可能的解决方案

  1. 只需在 x = genfromtxt('problem1.csv',分隔符=',')
  2. 另一种解决方案是:将 np.dot(xT,w[1:]) 更改为 np.dot(x[0].T,w[1:]),或np.dot(x[1].T,w[1:])

Array dimension

I am not sure what the meaning of your dataset is, but x has shape (11,2), w has shape of (1,).

Source of error

From your screenshot, the error is in np.dot(x.T,w[1:]). You cannot do dot product on x.T and w[1:], because of the dimensionality mismatch.

Possible solutions

  1. Simply add the line of x=x[0] or x=x[1], right after x = genfromtxt('problem1.csv', delimiter=',').
  2. An alternative solution would be: change np.dot(x.T,w[1:]) to np.dot(x[0].T,w[1:]), or np.dot(x[1].T,w[1:]).
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文