修复了onehot编码中的冗余,但在尝试反转时仍有错误

2024-06-16 17:09:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个热编码和使用𝜃̂ =((𝕏𝑇𝕏)^−1) * 𝕏𝑇𝕪 为了估计θ,由于冗余,我得到了一个错误,所以我决定删除有冗余的列

这是在删除列之前:

enter image description here 这是我的代码,因为我试图删除有冗余的列:

 def one_hot_encode_revised(data):
        
        all_columns = data.columns
    
        records = data[all_columns].to_dict(orient='records')
        encoder = DictVectorizer(sparse=False)
        encoded_X = encoder.fit_transform(records)
        df = pd.DataFrame(data=encoded_X, columns=encoder.feature_names_)
        
        return df.drop(['day=Fri', 'sex=Male', 'smoker=No', 'time=Dinner'], axis =1)
one_hot_X_revised = one_hot_encode_revised(X)

哪个输出: enter image description here

然后,我使用该函数根据上述方程估算θ:

def get_analytical_sol(X, y):
"""
Computes the analytical solution to our least squares problem

Parameters
-----------
X: a 2D dataframe of numeric features (one-hot encoded)
y: a 1D vector of tip amounts

Returns
-----------
The estimate for theta
"""
return np.linalg.inv(X.T * X) * (X.T * y)

要运行此操作,请执行以下操作:

revised_analytical_thetas = get_analytical_sol(one_hot_X_revised, tips)

我的错误是:ValueError:无法强制到DataFrame,形状必须是(8244):给定的(252252)

供参考,提示如下:

enter image description here

我是否正确地消除了冗余?如果是,为什么我仍然有错误

谢谢


Tags: columnstodfencoderdatadef错误all