【发布时间】:2023-03-18 06:20:01
【问题描述】:
我有一个带有两个分类列和一个数值列的 DataFrame X_Train,例如:
| A | B | N |
|---|---|---|
| 'a1' | 'b1' | 0.5 |
| 'a1' | 'b2' | -0.8 |
| 'a2' | 'b2' | 0.1 |
| 'a2' | 'b3' | -0.2 |
| 'a3' | 'b4' | 0.4 |
在将其发送到 sklearn 的线性回归之前,我将其更改为稀疏矩阵。为此,我需要将分类数据更改为数字索引,如下所示:
X_Train['acat'] = pd.factorize(X_Train['A'])[0]
X_Train['bcat'] = pd.factorize(X_Train['B'])[0]
然后我把它改成一个稀疏矩阵:
X_Train_Sparse = scipy.sparse.coo_matrix((X_Train.N, (X_Train.acat, X_Train.bcat)))
我还有另一个类似的DataFrame,X_Test,例如:
| A | B | N |
|---|---|---|
| 'a4' | 'b3' | 0.6 |
| 'a5' | 'b5' | -0.1 |
| 'a6' | 'b2' | -0.1 |
| 'a6' | 'b1' | -0.5 |
| 'a6' | 'b3' | 0.3 |
我还需要将其更改为稀疏矩阵。如何将 X_Train 中的相同 bcat 分类用于 X_Test,以便线性回归将 X_Train 中的“b1”视为与 X_Test 中的“b1”相同的变量?这意味着,如果 X_Test 中有任何 B 值不在 X_Train 中,则应该删除该 B 值,因为没有从该 B 值中学习,因此无法从中进行预测。
【问题讨论】:
-
您在一个问题中有多个问题,最好将它们分开并为每个子问题创建一个新问题,例如稀疏矩阵部分。
-
谢谢!但稀疏矩阵部分不是问题。我只是解释了为什么我需要编码。
标签: python scikit-learn linear-regression sparse-matrix categorical-data