R에서 k-means 구현 (고속)
8316 단어 R
기사의 목적
k-means를 R로 구현합니다.
for문을 최대한 사용하지 않고 실행 속도를 빨리 하도록 유의했습니다.
참고 : 비 파라 메트릭 베이즈 포인트 프로세스 및 통계적 기계 학습 수리
목차
No.
목차
1
모델 설명
2
데이터
3
구현
4
확인
1. 모델 설명
2. 데이터
사용할 데이터는 iris 데이터 세트입니다.
X <- iris[,1:4]
D <- ncol(X)
N <- nrow(X)
3. 구현
#(1)Kを求める
K <- 3
#(2)muを乱数で初期化
set.seed(100)
mu <- matrix(rep(apply(X,2,mean),each=K)+rnorm(K*D,0,1), nrow=K)
#(3)(ⅰ)(ⅱ)を繰り返す
max.iter <- 30
for(s in 1:max.iter){
#(i)各クラスタの平均との距離が最小のクラスに分類
tmp <- apply(mu, 1, function(x) apply(t(t(X)-x)^2, 1, sum))
z <- apply(tmp, 1, which.min)
#(ⅱ)各クラスタの平均を求める
mu <- apply(X, 2, function(x) tapply(x, z, mean))
}
4. 확인
왼쪽이 정답이고 오른쪽이 구현 후의 결과입니다.
library(cluster)
par(mfrow=c(1,2))
clusplot(X, iris[,5], color=TRUE, shade=FALSE, labels=4, lines=0)
clusplot(X, z, color=TRUE, shade=FALSE, labels=4, lines=0)
Reference
이 문제에 관하여(R에서 k-means 구현 (고속)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Tatsuki-Oike/items/ffdfcafcc8bd0c035ce5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
No.
목차
1
모델 설명
2
데이터
3
구현
4
확인
1. 모델 설명
2. 데이터
사용할 데이터는 iris 데이터 세트입니다.
X <- iris[,1:4]
D <- ncol(X)
N <- nrow(X)
3. 구현
#(1)Kを求める
K <- 3
#(2)muを乱数で初期化
set.seed(100)
mu <- matrix(rep(apply(X,2,mean),each=K)+rnorm(K*D,0,1), nrow=K)
#(3)(ⅰ)(ⅱ)を繰り返す
max.iter <- 30
for(s in 1:max.iter){
#(i)各クラスタの平均との距離が最小のクラスに分類
tmp <- apply(mu, 1, function(x) apply(t(t(X)-x)^2, 1, sum))
z <- apply(tmp, 1, which.min)
#(ⅱ)各クラスタの平均を求める
mu <- apply(X, 2, function(x) tapply(x, z, mean))
}
4. 확인
왼쪽이 정답이고 오른쪽이 구현 후의 결과입니다.
library(cluster)
par(mfrow=c(1,2))
clusplot(X, iris[,5], color=TRUE, shade=FALSE, labels=4, lines=0)
clusplot(X, z, color=TRUE, shade=FALSE, labels=4, lines=0)
Reference
이 문제에 관하여(R에서 k-means 구현 (고속)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Tatsuki-Oike/items/ffdfcafcc8bd0c035ce5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
사용할 데이터는 iris 데이터 세트입니다.
X <- iris[,1:4]
D <- ncol(X)
N <- nrow(X)
3. 구현
#(1)Kを求める
K <- 3
#(2)muを乱数で初期化
set.seed(100)
mu <- matrix(rep(apply(X,2,mean),each=K)+rnorm(K*D,0,1), nrow=K)
#(3)(ⅰ)(ⅱ)を繰り返す
max.iter <- 30
for(s in 1:max.iter){
#(i)各クラスタの平均との距離が最小のクラスに分類
tmp <- apply(mu, 1, function(x) apply(t(t(X)-x)^2, 1, sum))
z <- apply(tmp, 1, which.min)
#(ⅱ)各クラスタの平均を求める
mu <- apply(X, 2, function(x) tapply(x, z, mean))
}
4. 확인
왼쪽이 정답이고 오른쪽이 구현 후의 결과입니다.
library(cluster)
par(mfrow=c(1,2))
clusplot(X, iris[,5], color=TRUE, shade=FALSE, labels=4, lines=0)
clusplot(X, z, color=TRUE, shade=FALSE, labels=4, lines=0)
Reference
이 문제에 관하여(R에서 k-means 구현 (고속)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Tatsuki-Oike/items/ffdfcafcc8bd0c035ce5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#(1)Kを求める
K <- 3
#(2)muを乱数で初期化
set.seed(100)
mu <- matrix(rep(apply(X,2,mean),each=K)+rnorm(K*D,0,1), nrow=K)
#(3)(ⅰ)(ⅱ)を繰り返す
max.iter <- 30
for(s in 1:max.iter){
#(i)各クラスタの平均との距離が最小のクラスに分類
tmp <- apply(mu, 1, function(x) apply(t(t(X)-x)^2, 1, sum))
z <- apply(tmp, 1, which.min)
#(ⅱ)各クラスタの平均を求める
mu <- apply(X, 2, function(x) tapply(x, z, mean))
}
왼쪽이 정답이고 오른쪽이 구현 후의 결과입니다.
library(cluster)
par(mfrow=c(1,2))
clusplot(X, iris[,5], color=TRUE, shade=FALSE, labels=4, lines=0)
clusplot(X, z, color=TRUE, shade=FALSE, labels=4, lines=0)
Reference
이 문제에 관하여(R에서 k-means 구현 (고속)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Tatsuki-Oike/items/ffdfcafcc8bd0c035ce5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)