我在R中执行了k-means聚类,但我无法分析结果。我只是想创建一个包含导入数据框的数据框以及每个观察的聚类ID和聚类中心,这样我就可以进一步探索结果的准确性,例如1/2标准偏差和等等。
这是我用过的代码:
struct address
使用以下载体:
<html>
<body>
<head>
<script type="text/javascript">
var select = document.getElementById('cmbitems');
var input = document.getElementById('txtname');
select.onchange = function() {
input.value = select.value;
}
</script>
</head>
<table>
<tr>
<td colspan="2">DISPLAY</td>
</tr>
<tr>
<td>RESULT 1 <input type="text" name="cmbitems" id="cmbitems" onClick="checkItem()"></td>
<td>RESULT 2</td>
</tr>
<tr>
<tr>
<td>
BEGINNING
<select name="cmbitems" id="cmbitems">
<option value="name1">flow</option>
<option value="name2">green</option>
<option value="name3">red</option>
</select>
</td>
<td>END
</td>
</tr>
</table>
</body>
</html>
以下数据框:
iris = read.csv("C:\\Users\\newuser\\Desktop\\Data Anlysis\\Data Sets\\iris.csv")
results = kmeans(iris, 3)
包含观察结果,其中包含以下列:“X1”,“X2”,“X3”
我想在每行中创建一个包含以下列的数据框:“X1”,“X2”,“X3”,“ClusterID”,“X1_Center”,“X2_Center”和“X3_Center”
答案 0 :(得分:2)
创建数据框架很简单,虽然我认为“X1_Center”列实际上是4列,因为你有4个不同的功能是你实际需求的最佳答案,我认为不是。
然而,这是产生它的代码
results = kmeans(iris[,c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width")], 3)
library(data.table)
data <- iris
setDT(data)
# creating cluster_ID
data[,cluster_ID:=results$cluster]
# creating the X1, X@, X3 columns
data[,':='(X1=0,X2=0,X3=0)]
data[cluster_ID==1,X1:=1]
data[cluster_ID==2,X2:=1]
data[cluster_ID==3,X3:=1]
# add the duplicated center cordinates
data <- cbind(data,rep(1,nrow(data)) %*% t.default(results$centers[1,]))
data <- cbind(data,rep(1,nrow(data)) %*% t.default(results$centers[2,]))
data <- cbind(data,rep(1,nrow(data)) %*% t.default(results$centers[3,]))
# setnames for the addded columns
setnames(data,c(names(data)[1:9],
paste0("X1_center_",names(data)[1:4]),
paste0("X2_center_",names(data)[1:4]),
paste0("X3_center_",names(data)[1:4])))