代码之家  ›  专栏  ›  技术社区  ›  najmath

如何在nparray中添加字符串

  •  0
  • najmath  · 技术社区  · 6 年前

    这是我的代码:

    age=request.user.allusers.age
    sex=request.user.allusers.sex
    index_array = np.array(states)
    index_array = [val-1 for val in index_array]
    mask_array = np.zeros(193,dtype=float)
    mask_array[index_array] = 1
    mask_array=np.append(sex,mask_array)
    mask_array=np.append(age,mask_array)
    prob_array = clf.predict_proba([mask_array])
    

    在代码中 sex 是字符串。因此,在编译值时会出现错误。如何附加 性别 在numpy数组中。

    错误如下:

    ValueError: could not convert string to float: 'Female'
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Jai    6 年前
    • 只需在列表中插入值
    • 将列表作为numpy数组的参数

      import numpy as np
      
      age=23
      sex="Female"
      
      info_list = [age, sex]
      print("This is list", info_list)
      
      numpy_info_list = np.array(info_list)
      print("This is numpy array", numpy_info_list)
      
    • 输出:

      This is list [23, 'Female']
      This is numpy array ['23' 'Female']
      
    • 通常,这不利于预测以原始形式给出数据

    • 相反,您可以将女性转换为===>0和男to====>1.
    • 我们应该始终尝试将值转换为数字
    • 性别是一种可以取数值的分类数据

    • 解决方案之一是使用scikitlearn标签编码器对功能进行编码,如果您对特定功能有太多的值

    • 我知道使用标签编码器对功能进行编码很愚蠢,但这是一个解决方案
    • 这里有一个例子。。。这只是一个与性有关的例子

      le = preprocessing.LabelEncoder()
      >>> le.fit(["male", "female"])
      LabelEncoder()
      >>> list(le.classes_)
      ['male', 'female']
      >>> le.transform(["male", "male", "female"]) 
      array([1, 1, 2]...)
      
    • 其他解决方案可以是使用字典:

      age=23
      sex="female"
      sex_map = {"male": 1, "female": 2}
      
      info_list = [age, sex_map[sex]]
      print("This is list", info_list)
      
    • 输出:

      This is list [23, 2]