如何在nparray中添加字符串

时间:2018-03-24 08:33:42

标签: python python-3.x numpy scikit-learn numpy-ndarray

这是我的代码:

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数组中附加sex

这是错误:

ValueError: could not convert string to float: 'Female'

1 个答案:

答案 0 :(得分:1)

  • 只需在列表
  • 中插入值即可
  • 将列表作为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和男性====> 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]