热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

代码可以工作,但不能插入方法内部

如何解决《代码可以工作,但不能插入方法内部》经验,为你挑选了1个好方法。

我正在做一些简单的ML项目,我有一个简单的测试场景来测试我的代码:

import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
from numpy.random import randn
import random
import matplotlib.pyplot as plt

class Model():
    def __init__(self, model_name):
        self.model_name = model_name
        self.model = LinearRegression()
        self.model_data = pd.DataFrame(columns=['X','Y'])


    def retrain(self):
        self.model.fit(self.model_data[['X']],self.model_data['Y'])

    def choose_value(self):
        y_intercept = self.model.intercept_
        pass


    def accept_value(self,x_value,y_value):
        temp_df = pd.DataFrame(data=[[x_value,y_value]],columns=['X','Y'])
        new_model.model_data = new_model.model_data.append(temp_df)

    def __str__(self):
        return f'The formula for the line is y = {list(self.model.coef_)[0]}x + {self.model.intercept_}'

方案如下:

df = pd.DataFrame(data = 5*randn(50,1),columns=['X'])
new_list = []
for i in df['X']:
    new_list.append(-6.5*i + 100 + random.normalvariate(0,10))
df['Y'] = new_list

new_model = Model('1')
for i in range(len(df)):
    x_value, y_value = df.loc[i]
    new_model.accept_value(x_value,y_value)
    new_model.retrain()
print(new_model)
plt.scatter(x=df['X'],y=df['Y'])

当我执行场景时,一切都很完美,但是当我在这样的方法中复制相同的代码时:

def simulate():
    df = pd.DataFrame(data = 5*randn(50,1),columns=['X'])
    new_list = []
    for i in df['X']:
        new_list.append(-6.5*i + 100 + random.normalvariate(0,10))
    df['Y'] = new_list

    new_model = Model('1')
    for i in range(len(df)):
        x_value, y_value = df.loc[i]
        new_model.accept_value(x_value,y_value)
        new_model.retrain()
    print(new_model)
    plt.scatter(x=df['X'],y=df['Y'])  
simulate()

然后我收到以下错误消息:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
 in ()
     14     plt.scatter(x=df['X'],y=df['Y'])
     15 
---> 16 simulate()

 in simulate()
     10         x_value, y_value = df.loc[i]
     11         new_model.accept_value(x_value,y_value)
---> 12         new_model.retrain()
     13     print(new_model)
     14     plt.scatter(x=df['X'],y=df['Y'])

 in retrain(self)
     10 
     11     def retrain(self):
---> 12         self.model.fit(self.model_data[['X']],self.model_data['Y'])
     13 
     14     def choose_value(self):

/anaconda3/lib/python3.6/site-packages/sklearn/linear_model/base.py in fit(self, X, y, sample_weight)
    480         n_jobs_ = self.n_jobs
    481         X, y = check_X_y(X, y, accept_sparse=['csr', 'csc', 'coo'],
--> 482                          y_numeric=True, multi_output=True)
    483 
    484         if sample_weight is not None and np.atleast_1d(sample_weight).ndim > 1:

/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py in check_X_y(X, y, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, warn_on_dtype, estimator)
    571     X = check_array(X, accept_sparse, dtype, order, copy, force_all_finite,
    572                     ensure_2d, allow_nd, ensure_min_samples,
--> 573                     ensure_min_features, warn_on_dtype, estimator)
    574     if multi_output:
    575         y = check_array(y, 'csr', force_all_finite=True, ensure_2d=False,

/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
    460                              " minimum of %d is required%s."
    461                              % (n_samples, shape_repr, ensure_min_samples,
--> 462                                 context))
    463 
    464     if ensure_min_features > 0 and array.ndim == 2:

ValueError: Found array with 0 sample(s) (shape=(0, 1)) while a minimum of 1 is required.

在方法内部似乎不接受值.我不知道为什么我会收到这样的错误,有人可以帮助我吗?



1> CJR..:

这是因为你调用new_model.model_dataaccept_value().它没有正确访问您正在使用的实际实例(self).它不在函数中时工作正常,因为它访问ipython工作区中的new_model.

class Model():
    def __init__(self, model_name):
        self.model_name = model_name
        self.model = LinearRegression()
        self.model_data = pd.DataFrame(columns=['X','Y'])
    def retrain(self):
        self.model.fit(self.model_data[['X']],self.model_data['Y'])
    def choose_value(self):
        y_intercept = self.model.intercept_
        pass
    def accept_value(self,x_value,y_value):
        temp_df = pd.DataFrame(data=[[x_value,y_value]],columns=['X','Y'])
        self.model_data = self.model_data.append(temp_df)


推荐阅读
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
author-avatar
朱玉龙1977
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有