簡體   English   中英

將Pandas DataFrame轉換為LIBFM格式的txt文件

[英]Transform Pandas DataFrame to LIBFM format txt file

我想將python中的Pandas Data幀轉換為LIBFM格式的稀疏矩陣txt文件。

這里的格式需要如下所示:

4   0:1.5   3:-7.9
2   1:1e-5  3:2
-1  6:1

該文件包含三種情況。 第一列說明了三種情況中每種情況的目標:即第一種情況為4,第二種情況為2,第三種情況為-1。 在目標之后,每行包含x的非零元素,其中0:1.5的條目讀取x0 = 1.5和3:-7.9表示x3 = -7.9等。這意味着INDEX的左側:VALUE表示x中的索引,而右邊則表示x的值。

總的來說,該示例中的數據描述了以下設計矩陣X和目標矢量y:

   1.5  0.0   0.0  −7.9  0.0  0.0  0.0
X: 0.0  10−5  0.0  2.0   0.0  0.0  0.0
   0.0  0.0   0.0  0.0   0.0  0.0  1.0

   4
Y: 2
  −1

第2章的手冊文件中也對此進行了解釋。

現在這是我的問題:我有一個像這樣的pandas數據框:

  overall reviewerID        asin       brand         Positive Negative  \
0  5.0   A2XVJBSRI3SWDI  0000031887  Boutique Cutie     3.0       -1
1  4.0   A2G0LNLN79Q6HR  0000031887  Boutique Cutie     5.0       -2
2  2.0   A2R3K1KX09QBYP  0000031887  Boutique Cutie     3.0       -2
3  1.0   A19PBP93OF896   0000031887  Boutique Cutie     2.0       -3
4  4.0   A1P0IHU93EF9ZK  0000031887  Boutique Cutie     2.0       -2

  LDA_0     LDA_1      ...    LDA_98      LDA_99
0  0.000833  0.000833  ...    0.000833    0.000833
1  0.000769  0.000769  ...    0.000769    0.000769
2  0.000417  0.000417  ...    0.000417    0.000417
3  0.000137  0.014101  ...    0.013836    0.000137
4  0.000625  0.000625  ...    0.063125    0.000625

其中“整體”是目標列,其他所有105列都是特征。

需要將'ReviewerId','Asin'和'Brand'列更改為虛擬變量。 因此,每個獨特的“ReviewerID”,“Asin”和品牌都有自己的專欄。 這意味着如果'ReviewerID'有100個唯一值,則獲得100列,如果該行代表特定的Reviewer,則值為1,否則為零。

所有其他列不需要重新格式化。 因此,這些列的索引可以只是列號。

所以上面的pandas數據框中的前3行需要轉換為以下輸出:

5 0:1 5:1 6:1 7:3 8:-1 9:0.000833 10:0.000833 ... 107:0.000833 108:0.00833
4 1:1 5:1 6:1 7:5 8:-2 9:0.000769 10:0.000769 ... 107:0.000769 108:0.00769
2 2:1 5:1 6:1 7:3 8:-2 9:0.000417 10:0.000417 ... 107:0.000417 108:0.000417

在LIBFM]包中有一個程序可以將User-Item-Rating轉換為LIBFM輸出格式。 但是這個程序無法與這么多列相提並論。

是否有捷徑可尋? 我總共有100萬行。

LibFM可執行文件需要您在此處說明的libSVM格式的輸入。 如果LibFM包中的文件轉換器不適用於您的數據,請嘗試使用scikit learn sklearn.datasets.dump_svmlight_file方法。

參考: http//scikit-learn.org/stable/modules/generated/sklearn.datasets.dump_svmlight_file.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM