这是我的代码:
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'
答案 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']
通常这不适合预测以原始形式提供数据
性别是一种分类数据,可以采用数值
其中一个解决方案是使用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]