当前位置: 首页 > 知识库问答 >
问题:

计算参数时出错(不支持的操作数类型)

洪雨石
2023-03-14

我正在为我的小型数据科学项目计算线性回归。

import numpy as np

# I'm using the idea from https://devarea.com/linear-regression-with-numpy/#.XRfdcegzaUk
class LinearRegression:
    def __init__(self, values):
        self.y = np.array(values)
        self.x = np.array([number for number in range(1, len(values)+1)])
        self.values_to_return = []

    def getlinear(self, x1):
        # Function that returns value
        def inner(x1):
            return self.m * x1 + self.b

        self.m = (len(self.x) * np.sum(self.x*self.y) - np.sum(self.x) * np.sum(self.y)) / (len(self.x)*np.sum(self.x*self.x) - np.sum(self.x) * np.sum(self.x))
        self.b = (np.sum(self.y) - self.m*np.sum(self.x)) / len(self.x)

        return inner

当将list(Dictionary.values())传递到我得到的类中时

回溯(最近的调用为last):文件“C://users/paweé/documents/projects vscode/worldbankdatakeras/tests.py”,第41行,在graph.plot_graph_renewable_electricity_status()文件“C:\users\paweé\documents\projects vscode\worldbankdatakeras\graph_plotting.py”,第115行,在plot_graph_renewable_electricity_status linestyle='-')文件“Wargs)文件”C:\users\pawe\\appdata\local\programs\python\python37\lib\site-packages\matplotlib\axes_axes.py“,第1612行,在plot self.add_line(line)文件”update_line_limits path=line.get_path()文件“C:\users\pawe\\appdata\local\programs\python\python37\lib\site-packages\matplotlib\lines.py“,第945行,在get_path self.recache()文件”C:\users\pawe\appdata\local\programs\python\python37\lib\site-packages\matplotlib\lines.py“中,第645行,在recache y=_to_unmasked_float_array(yconv).ravel()文件”在)文件“C:\users\pawe\appdata\local\programs\python\python37\lib\site-packages\numpy\core\numeric.py”,第538行,在asarray返回array(a,dtype,copy=false,order=order)typeerror:float()参数必须是字符串或数字,而不是function

编辑2:

class CountryInformations:

    def __init__(self, name):
        self.name = name

        xls_parsing = xls_parse.XLSParsing(self.name)

        self.population = xls_parsing.import_country_population()
        self.co2_emissions = xls_parsing.import_country_co2_emissions()
        self.renewable_electricity_status = xls_parsing.import_country_renewable_electricity_status()

        # I want to have linear regression values in format [year] : value
        self.population_linear_regression = self.population.copy()
        self.co2_emissions_linear_regression = self.co2_emissions.copy()
        self.renewable_electricity_status_linear_regression = self.renewable_electricity_status.copy()

        linear = linear_regr.LinearRegression(list(self.population_linear_regression.values()))
        # Replacing values in dict by values from linear regression
        self.population_linear_regression = dict.fromkeys(self.population_linear_regression,
                                                          linear.return_values_of_linear_regression())

        linear = linear_regr.LinearRegression(list(self.co2_emissions_linear_regression.values()))
        # Replacing values in dict by values from linear regression
        self.co2_emissions_linear_regression = dict.fromkeys(self.co2_emissions_linear_regression,
                                                             linear.return_values_of_linear_regression())

        linear = linear_regr.LinearRegression(list(self.renewable_electricity_status_linear_regression.values()))
        # Replacing values in dict by values from linear regression
        self.renewable_electricity_status_linear_regression = dict.fromkeys(self.renewable_electricity_status_linear_regression, 
                                                                            linear.return_values_of_linear_regression())

    def __str__(self):
        print_string = 'Country: {} \n \
                        Population: {}M \n \
                        CO2 Emissions: {}KT \n \
                        Renewable Electricity Status: {}%'.format(self.name, \
                                                                  self.population, \
                                                                  self.co2_emissions, \
                                                                  self.renewable_electricity_status)
        return print_string

共有1个答案

楚岳
2023-03-14

我通过删除内部函数解决了这个问题。我不知道为什么它会这样做

def getlinear(self, x1):

    self.m = (len(self.x) * np.sum(self.x*self.y) - np.sum(self.x) * np.sum(self.y)) / (len(self.x)*np.sum(self.x*self.x) - np.sum(self.x) * np.sum(self.x))
    self.b = (np.sum(self.y) - self.m*np.sum(self.x)) / len(self.x)

    return self.m * x1 + self.b

谢谢你帮助大家

 类似资料:
  • 我正在使用ASP.NET 5 如果我将其中一个命令模型名称更改为不同的名称,那么Swagger就可以工作了。然而,我相信这个嵌套类模型名称是合法的,也应该与swagger一起使用。如果有办法解决这个问题。谢谢

  • 请看下面的代码。我使用Apache Derby作为嵌入式数据库 此代码出现以下错误 在这里,我试图做的是,获取全名,它作为FirstName、MiddleName和LastName存储在数据库中。 示例:名字-彼得,中间名-梅塔,姓氏-约翰逊 然后我试着得到“彼得·梅塔·约翰逊”。这就是为什么我使用运算符将值合并到3列中。 为什么我得到这个错误?这在MSSQL Server中有效,但在Derby中

  • 问题内容: 每当我运行这个程序我都会得到这个 我该怎么做才能将pyc除以tpy? 问题答案: 通过将它们变成整数: 在python 3中,该函数返回一个字符串。总是。这是对Python 2的更改;该功能已重命名为。

  • 我目前正在进行客房预订工作,在那里我成功地获得了在特定日期预订的房间数量。我很难从总房间数中减去已经预订的房间数。它一直告诉我,“$No_of_Rooms”是一个数组,我无法从总房间数中减去它。我有一个错误“致命错误:不支持的操作数类型…”。 有人能指导我吗,我刚刚开始学习php。我看了很多有这种错误的线程,但仍然没有类似我的。

  • 问题内容: 我试图像这样制作垂直的seaborn boxplot 我得到 我写东方 并得到 但 作品coreect!怎么了? 问题答案: 对于Seaborn的箱形图,在水平和垂直对齐方式之间切换时,请务必注意x轴和y轴的分配: 混淆列会导致seaborn尝试计算分类数据框中的摘要统计信息,这肯定会失败。

  • 我有以下代码。我知道它既长又复杂,但在我的笔记本电脑上运行需要1.5分钟。如果您能帮助我找到最后导致错误的问题-绘图部分,我将不胜感激。我在Google上没有找到与此错误消息相关的任何内容: QuadMesh和Float的不支持操作数类型 在绘图部分,我尝试了多种形式。它失败于: 在以下情况下失败: 我没有办法在那里介绍什么。 非常感谢。