質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

解決済

1回答

2989閲覧

RでのSOM 自己組織化マップ

kaErita_E

総合スコア14

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

2クリップ

投稿2018/01/11 05:35

編集2018/01/11 23:26

R初学者です.タイトルの通り,RでSOMをつくりたくいろんなサイトを参考に試行錯誤していますが,うまくいかず困っています.

こちらのサイトを参考に動かしてみました.
http://d.hatena.ne.jp/isseing333/20110224/1298512568

R

1 2library(kohonen) 3library(ggplot2) 4 5#---ここのDimとUseDataを必要に応じて変更する 6Dim <- 10 7UseData <- do.call(cbind, iris[, -5]) 8UseData <- scale(UseData) 9 10 11#------SOMの実行 12GRID <- somgrid(xdim = Dim, ydim = Dim, topo = "hexa") 13DataSom <- som(UseData, grid = GRID) 14 15DataHex <- data.frame(DataSom$codes) 16DataHexStd <- data.frame(scale(DataHex)) 17DataHexStd$x <- rep(1:Dim, Dim) 18DataHexStd$y <- rep(1:Dim, rep(Dim, Dim)) 19 20#---------グラフ 21HighCol <- "#950000" 22LowCol <- "#3500BF" 23 24 25#------textの追加 26DataSomMap <- data.frame(Data = 1:nrow(UseData), 27 x = DataSom$unit.classif - trunc((DataSom$unit.classif - 1)/Dim) * Dim, 28 y = trunc((DataSom$unit.classif - 1)/Dim) + 1) 29DataSomMap$x <- DataSomMap$x + runif(nrow(UseData), -0.5, 0.5) 30DataSomMap$y <- DataSomMap$y + runif(nrow(UseData), -0.5, 0.5) 31DataSomMap <- cbind(DataSomMap, UseData) 32 33 34#------ggplot2 35i <-1 36ggplot(DataHexStd, aes(x, y, col = DataHexStd[, i])) + 37 scale_colour_gradient2(high = LowCol, low = HighCol) + 38 geom_point(size = 190 / Dim, shape = 15) + 39 opts(legend.position = "none", title = names(DataHexStd)[i]) 40

しかし下記のようにエラーがでてきます.

R

1> library(kohonen) 2> library(ggplot2) 3> 4> #---ここのDimとUseDataを必要に応じて変更する 5> Dim <- 10 6> UseData <- do.call(cbind, iris[, -5]) 7> UseData <- scale(UseData) 8> 9> 10> #------SOMの実行 11> GRID <- somgrid(xdim = Dim, ydim = Dim, topo = "hexa") 12> DataSom <- som(UseData, grid = GRID) 13 som(UseData, grid = GRID) でエラー: 使われていない引数 (grid = GRID) 14> 15> DataHex <- data.frame(DataSom$codes) 16> DataHexStd <- data.frame(scale(DataHex)) 17> DataHexStd$x <- rep(1:Dim, Dim) 18 `$<-.data.frame`(`*tmp*`, x, value = c(1L, 2L, 3L, 4L, 5L, 6L, でエラー: 19 replacement has 100 rows, data has 0 20> DataHexStd$y <- rep(1:Dim, rep(Dim, Dim)) 21 `$<-.data.frame`(`*tmp*`, y, value = c(1L, 1L, 1L, 1L, 1L, 1L, でエラー: 22 replacement has 100 rows, data has 0 23> 24> #---------グラフ 25> HighCol <- "#950000" 26> LowCol <- "#3500BF" 27> 28> 29> #------textの追加 30> DataSomMap <- data.frame(Data = 1:nrow(UseData), 31+ x = DataSom$unit.classif - trunc((DataSom$unit.classif - 1)/Dim) * Dim, 32+ y = trunc((DataSom$unit.classif - 1)/Dim) + 1) 33 data.frame(Data = 1:nrow(UseData), x = DataSom$unit.classif - でエラー: 34 引数に異なる列数のデータフレームが含まれています: 150, 0 35> DataSomMap$x <- DataSomMap$x + runif(nrow(UseData), -0.5, 0.5) 36 エラー: オブジェクト 'DataSomMap' がありません 37> DataSomMap$y <- DataSomMap$y + runif(nrow(UseData), -0.5, 0.5) 38 エラー: オブジェクト 'DataSomMap' がありません 39> DataSomMap <- cbind(DataSomMap, UseData) 40 cbind(DataSomMap, UseData) でエラー: 41 オブジェクト 'DataSomMap' がありません 42> 43> 44> #------ggplot2 45> i <-1 46> ggplot(DataHexStd, aes(x, y, col = DataHexStd[, i])) + 47+ scale_colour_gradient2(high = LowCol, low = HighCol) + 48+ geom_point(size = 190 / Dim, shape = 15) + 49+ opts(legend.position = "none", title = names(DataHexStd)[i]) 50 opts(legend.position = "none", title = names(DataHexStd)[i]) でエラー: 51 関数 "opts" を見つけることができませんでした 52

将来的にはUseDataに図のようなcsvを入れたいと考えています.
イメージ説明

このエラーの詳細や対策方法などご教授いただけると幸いです.

//追記
Rを再起動したところ,下記のようなエラーが出ました.途中まではうまく通るようになったようです,回答ありがとうございます.

R

1> library(kohonen) 2> library(ggplot2) 3> 4> #---ここのDimとUseDataを必要に応じて変更する 5> Dim <- 10 6> UseData <- do.call(cbind, iris[, -5]) 7> UseData <- scale(UseData) 8> 9> 10> #------SOMの実行 11> GRID <- somgrid(xdim = Dim, ydim = Dim, topo = "hexa") 12> DataSom <- som(UseData, grid = GRID) 13> 14> DataHex <- data.frame(DataSom$codes) 15> DataHexStd <- data.frame(scale(DataHex)) 16> DataHexStd$x <- rep(1:Dim, Dim) 17> DataHexStd$y <- rep(1:Dim, rep(Dim, Dim)) 18> 19> #---------グラフ 20> HighCol <- "#950000" 21> LowCol <- "#3500BF" 22> 23> 24> #------textの追加 25> DataSomMap <- data.frame(Data = 1:nrow(UseData), 26+ x = DataSom$unit.classif - trunc((DataSom$unit.classif - 1)/Dim) * Dim, 27+ y = trunc((DataSom$unit.classif - 1)/Dim) + 1) 28> DataSomMap$x <- DataSomMap$x + runif(nrow(UseData), -0.5, 0.5) 29> DataSomMap$y <- DataSomMap$y + runif(nrow(UseData), -0.5, 0.5) 30> DataSomMap <- cbind(DataSomMap, UseData) 31> 32> 33> #------ggplot2 34> i <-1 35> ggplot(DataHexStd, aes(x, y, col = DataHexStd[, i])) + 36+ scale_colour_gradient2(high = LowCol, low = HighCol) + 37+ geom_point(size = 190 / Dim, shape = 15) + 38+ opts(legend.position = "none", title = names(DataHexStd)[i]) 39 opts(legend.position = "none", title = names(DataHexStd)[i]) でエラー: 40 関数 "opts" を見つけることができませんでした

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2018/01/11 05:43

pythonではなくRでは?
kaErita_E

2018/01/11 05:47

大変失礼いたしました。Rでございます。pythonでもできないかと同時に考えていたためおかしなことになってしまいました。
guest

回答1

0

ベストアンサー

やってみましたがsom(UseData, grid = GRID) でエラー: 使われていない引数 (grid = GRID)のエラーは再現しませんでした。
そもそも引数gridを受け付けていないというのがおかしいので、可能性として思いつくのは、試行錯誤の過程でsomが別のものに上書きされてしまっていることくらいです。
示されているログでこれ以降に出てくるエラーはいずれもDataSomの作成に失敗していることによる副次的なエラーであるように見えます。

Rを再起動してみても状況は変わらないでしょうか。

投稿2018/01/11 19:08

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaErita_E

2018/01/11 23:27

回答ありがとうございます.再起動したところ,最後以外はうまくいくようになりました.ありがとうございます.最後の 関数 "opts" を見つけることができませんでした というエラーは再現できませんでしたでしょうか…?
kaErita_E

2018/01/14 05:12

なるほど,大変参考になりました.themeを使用することでうまくいきました!ありがとうございます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問