我对这个话题很陌生。我目前正在开发一种潜在因子矩阵分解,它将为神经网络训练数据。
我有一个像这样的csv表:
user_id song_id playcount
frank SOBYHAJ12A6701BF1D 23
john SODACBL12A8C13C273 1
john SODXRTY12AB0180F3B 3
mary SOFRQTD12A81C233C0 1
您可以将此表视为矩阵的描述。我想建立一个矩阵:
rows=song_id, columns=user_id, value=playcount
我已将数据加载到pandas数据帧中:
triplets_training_set = pd.read_csv(filepath)
现在我想用这些数据构建一个稀疏矩阵。
另一个问题:
我需要对值进行矢量化吗?即将' b80344d063b5ccb3212f76538f3d9e43d87dca9e '翻译成整数user_id? (相同 用song_id)
我读过这样的问题,但我不知道如何处理最后一个问题
我提出的唯一解决方案是首先制作2个像:
{ frank: 1, john: 2, mary:3, ..}
{ SOBYHAJ12A6701BF1D:1 , SODACBL12A8C13C273:2. ..}
然后逐行遍历数据框 triplets_training_set ,构造矩阵。但这是一个天真的解决方案。必须有一个更好的。
提前致谢!
答案 0 :(得分:1)
您可以使用sklearn.preprocessing.LabelEncoder
将user_id
和song_id
字段编码为整数。然后可以将它们用作矩阵的索引。从那里我将使用scipy.sparse
中选择的矩阵来加载数据。如下所示:
from sklearn.preprocessing import LabelEncoder
from scipy import sparse as ss
le = LabelEncoder()
user_ids = le.fit_transform(df.user_id)
song_ids = le.fit_transform(df.song_id)
sarr = ss.csr_matrix((df.playcount, (user_ids, song_ids)))
sarr
<3x4 sparse matrix of type '<class 'numpy.int64'>'
with 4 stored elements in Compressed Sparse Row format>
sarr.todense()
matrix([[23, 0, 0, 0],
[ 0, 1, 3, 0],
[ 0, 0, 0, 1]], dtype=int64)
答案 1 :(得分:0)
这是你想要的吗?
public class ChatappMsg {
private String messageBody;
private String messageAt;
private String messageBy;
private String messageType;
private int messageID;
public String getMessageBody() {
return messageBody;
}
public void setMessageBody(String messageBody) {
this.messageBody = messageBody;
}
public String getMessageAt() {
return messageAt;
}
public void setMessageAt(String messageAt) {
this.messageAt = messageAt;
}
public String getMessageBy() {
return messageBy;
}
public void setMessageBy(String messageBy) {
this.messageBy = messageBy;
}
public String getMessageType() {
return messageType;
}
public void setMessageType(String messageType) {
this.messageType = messageType;
}
public int getMessageID() {
return messageID;
}
public void setMessageID(int messageID) {
this.messageID = messageID;
}
public ChatappMsg(String messageBody, String messageAt, String messageBy, String messageType, int messageID) {
this.messageBody = messageBody;
this.messageAt = messageAt;
this.messageBy = messageBy;
this.messageType = messageType;
this.messageID = messageID;
}
@Override
public String toString() {
return "ChatappMsg{" +
"messageBody='" + messageBody + '\'' +
", messageAt='" + messageAt + '\'' +
", messageBy='" + messageBy + '\'' +
", messageType='" + messageType + '\'' +
", messageID='" + messageID + '\'' +
'}';
}
}