0

我花了很多时间尝试,但不知何故没有任何效果——我想这对于高级 R 用户来说很容易。我得到了一个数据格式,其中每个元素都按行出现。首先是作为字符串的标签,后跟 1000 个数字特征,全部用空格分隔:

"label1" 1 0 1 0 0 0 ...
"label2" 0 0 0 0 1 0 ...
"label2" 0 0 1 0 1 0 ...
"label2" 1 1 1 1 0 0 ...
...

我遇到的问题是读取矩阵时的标签(第一行或总是第一列)。我想将此矩阵应用于 tsne (降维),但标签会导致问题。所以我需要没有标签的矩阵,但我想稍后存储标签,这样我就可以用它们的新尺寸打印它们。到目前为止我得到的是以下(相当伪代码):

Data <- read.table("File.txt", header=False, row.names=1)
Labels <- Data[1]    # I somehow need the labels
Data[1] <- NULL # this should remove the first row (labels ?)
tsne = tsne(Data, initial_config = NULL, k = 2, initial_dims = 30,...)# function that reduces dimension

在这里,我需要将新的二维矩阵与每个标签一起打印的东西,例如label[x] + tsne[xDimension] + tsne[yDimension]

我希望你们中的某个人可以帮助我,在此先感谢并致以最诚挚的问候。

4

3 回答 3

1
data <- read.table("File.txt", header=False, row.names=1)
dlabels <- data[,1]

res = tsne(as.matrix(data[,-1]), ...)

之后您对标签的处理完全取决于您,因为从您的问题中不清楚您想用这些实现什么

于 2014-01-10T09:35:06.580 回答
1

read.table像以前一样读取 using 中的数据。

data_as_data.frame <- read.table(
  text = '"label1" 1 0 1 0 0 0 
"label2" 0 0 0 0 1 0 
"label2" 0 0 1 0 1 0 
"label2" 1 1 1 1 0 0'
)

从除第一列之外的所有列创建一个矩阵。

data_as_a_matrix <- as.matrix(data_as_data.frame[, -1])

使用第一列作为矩阵中的行名。

rownames(data_as_a_matrix) <- data_as_data.frame[, 1]
data_as_a_matrix
##        V2 V3 V4 V5 V6 V7
## label1  1  0  1  0  0  0
## label2  0  0  0  0  1  0
## label2  0  0  1  0  1  0
## label2  1  1  1  1  0  0
于 2014-01-10T09:37:52.600 回答
0

尝试以下命令:

cbind(Labels, tsne)
于 2014-01-10T09:36:02.147 回答