【问题标题】:encountering as error when trying to create a artificial dataframe in Python尝试在 Python 中创建人工数据框时遇到错误
【发布时间】:2020-09-08 02:44:18
【问题描述】:

这是我的第一篇文章,请原谅我的任何遗漏。

试图创建一个人工数据框以使用 k-means 聚类。运行数据集创建功能并查看数据框出现错误时出现此错误,如下所示。

TypeError: _append_dispatcher() missing 1 required positional argument: 'values'

感谢您的支持和帮助解决问题。

from scipy.stats import norm 
import random
from numpy import *
import numpy as np
from ast import literal_eval
from pandas import DataFrame
def create_clustered_data(N,k):
    random.seed(10)
    points_per_cluster=float(N)/k
    x=[]
    
    for i in range(k):
        income_centroid=random.uniform(20000,200000)
        age_centroid=random.uniform(20,70)
        for j in range(int(points_per_cluster)):
            x=np.append([random.normal(income_centroid,10000),random.normal(age_centroid,2)])
        x=np.array(x)
    return(x)

df=create_clustered_data(100,5)
df

错误信息

TypeError                                 Traceback (most recent call last)
<ipython-input-204-0ff0b56b46c6> in <module>
     18     return(x)
     19 
---> 20 df=create_clustered_data(100,5)
     21 df
     22 

<ipython-input-204-0ff0b56b46c6> in create_clustered_data(N, k)
     14         age_centroid=random.uniform(20,70)
     15         for j in range(int(points_per_cluster)):
---> 16             x=np.append([random.normal(income_centroid,10000),random.normal(age_centroid,2)])
     17         x=np.array(x)
     18     return(x)

<__array_function__ internals> in append(*args, **kwargs)

TypeError: _append_dispatcher() missing 1 required positional argument: 'values'

【问题讨论】:

    标签: python dataframe cluster-analysis linear-regression k-means


    【解决方案1】:

    这里 x=[] 创建一个列表,而不是一个 numpy 数组,也检查 numpy append 函数的语法。 解决问题的一种方法是使用 list.append 函数将其附加到列表中,然后将列表转换为 numpy 数组。

    from scipy.stats import norm 
    import random
    from numpy import *
    import numpy as np
    from ast import literal_eval
    from pandas import DataFrame
    
    def create_clustered_data(N,k):
        random.seed(10)
        points_per_cluster=float(N)/k
        x=[]
        for i in range(k):
            income_centroid=random.uniform(20000,200000)
            age_centroid=random.uniform(20,70)
            for j in range(int(points_per_cluster)):
                x.append([random.normal(income_centroid,10000),random.normal(age_centroid,2)])
            ar = np.array(x) 
        return(ar)
    
    df=create_clustered_data(100,5)
    df
    

    【讨论】:

      猜你喜欢
      • 2021-05-15
      • 2018-09-30
      • 1970-01-01
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 2021-01-11
      • 1970-01-01
      相关资源
      最近更新 更多