我尝试调用预测函数,以便我有以下代码
def convert_to_df(obj):
obj_dic = obj.dict()
df = pd.DataFrame(obj_dic.values(), index=obj_dic.keys())
df.reset_index(drop=True, inplace=True)
return df
@app.get("/get_rating")
def get_rating(features: Features):
features = convert_to_df(features).T # shape (1, 26)
return {'rating': Predictor().predict(features)}
但我得到了以下错误:
File“stringsource”,line 658,in View.MemoryView.memoryview_cwrapper File“stringsource”,line 349,in View. memoryView. memoryview.cinitValueError:ndarray不是C连续的
我该如何解决这个问题?
谢谢
编辑
Predictor是一个带有scikit learn的knn模型训练器
def predict(self, features) -> int:
return self.model.predict(features)
2条答案
按热度按时间c8ib6hqw1#
数据量和回溯信息仍然不够。不过,我猜猜看。
让我们做一个简单的框架:
predict
可能使用了一些需要c-contiguous
数据的编译代码。如果给定一个数组,它可能首先将其转换为数组,例如使用np.array(df)
或有效地:但是如果你转置,邻接性就改变了。这是众所周知的数组,看起来pandas是兼容的:
pandas
transpose
允许我们指定copy -参见其文档:所以在代码中使用(?解决问题:
我再怎么强调也不为过,你应该在你的问题中包括足够的信息。
0x6upsns2#
即使所有列都独立地> C_CONTIGUOUS:真
分配时