我有多个Y变量,我运行一个循环来创建多个模型。我必须用所有的系数创建一个二维numpy数组。面临着同样的错误。你知道吗
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 42)
accuracy_logistic = np.ones(100,dtype = float)
model_log = []
y_pred_output = np.array([])
pred_coef = pd.DataFrame()
for i in range(0,100):
model_log = LogisticRegression(class_weight='balanced')
model_log.fit(X_train,y_train[:,i])
log_prediction = model_log.predict(X_test)
accuracy_logistic[i] = accuracy_score(y_test[:,i],log_prediction)
##Error inline below##
pred_coef = np.append(pred_coef, np.transpose(np.array(model_log.coef_)), axis= 0)
错误消息
ValueError Traceback (most recent call
---> 12 pred_coef = np.append(pred_coef, np.transpose(np.array(model_log.coef_)), axis= 0)
~/anaconda3/lib/python3.7/site-packages/numpy/lib/function_base.py in append(arr, values, axis)
4526 values = ravel(values)
4527 axis = arr.ndim-1
-> 4528 return concatenate((arr, values), axis=axis)
ValueError: all the input arrays must have same number of dimensions
也许我误解了你的目标,但我认为你的错误在于:
您已经创建了一个DataFrame pred\u coef,因此似乎应该使用数据框追加功能。你知道吗
这应该为您提供一个数据帧,每一行都是给定y的系数
编辑:@Alollz很好地指出,迭代附加到数据帧是低效的。这可以通过在循环之前创建一个列表来完成,而不是创建pred\u coef数据帧并将系数附加到其中。然后可以从列表中构造数据帧。例如
相关问题 更多 >
编程相关推荐