• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:R言語のクラスタリングについて(kmeans))

R言語のクラスタリングについて(kmeans)

このQ&Aのポイント
  • R言語のクラスタリング結果をCSVで出力する方法について質問です。
  • 10個のパラメータを持つ10000個のデータの集合をk-means法で5つのクラスタに分類しました。それぞれのクラスタに所属するデータをCSVで出力したいのですが、具体的な方法がわかりません。
  • helpで調べたところ、$cluster[index]ではクラスタ番号が返されるだけで、クラスタごとの出力にはなりません。どのようにすればクラスタごとのデータを出力できるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.2

No.1があまりにも素っ気なかったので、もう1つ追加です。 aaaにkmeansの結果が入っているとるすと matrix(aaa$cluster) array(aaa$cluster) などでそれぞれの型で取り出せます。 Rになれているのでしたら、こちらを参考に

jojojoooon
質問者

お礼

無事に出力できました!ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

1つの方法としてですが、 $clusterでクラスタ番号は全部出てきますよね。 そのクラスタ番号の部分だけをテキストエディタにコピー&ペーストして、空白の部分を改行に置換します。 それを表計算ソフトに読み込ませて、クラスタ番号の行を1列作ります。 次に、もとの10列のデータを横にペーストして、クラスタ番号でソートすればちゃんと並びます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 因子分析の結果、因子得点を使ったクラスタリングを行う際について

    広く一般的には、因子得点を階層分類(ウォード)や非階層分類(k-means)などを通してクラスター分析することが通例だと思いますが、質問です。 仮に因子分析の結果、4因子を抽出することができたとして、当然ですが各レコード(回答者)には4つの因子得点が付与されることになります。ここでレコードを分類(クラスタリング)する際、上記のような通例のクラスター分析を行わず、『単に、4因子をそのままクラスター特性と見なし、各レコードが持つ4因子得点のうち、最も高い得点をもつ因子(ここではそのままクラスター)に強制的に所属させる』という手法を用いた場合、どのような懸案が考えられるのでしょうか。 結果を解釈する上で、把握しておかなくてはいけない背景や知識があれば、と思います。 もっとも、因子分析ですとかクラスター分析の解釈自体が主観的なものですし、数学的・解析的に問題は無いと思いますが、ご意見伺いたいと思います。 勿論、最大値をとるとなると正の値に着目することになるので、負の値が特性を持つ場合に、その特性を無視してしまう、ということは承知の上です。 ただし、階層分類等を用いると、「因子得点が4つとも低いグループ」「因子得点が4つとも高いグループ」といった分類結果が見受けられ、クラスターの特性として傾向を見せにくい(「このクラスターはすべての因子に反応」とか「すべての因子に反応しない」など)ことが多々ありますので、このような質問をしている次第です。 有識者の方、ご意見をいただけれると幸いです。

  • R言語とExcelとの比較

    普段は統計についての仕事はexcelで行ってる。関数でデータを解析したり、グラフを作ったりしましたが、最近R言語に気になるんですけど、Excelと比べて、Rは何のメリットがありますか?(Excelは関数も多いし、グラフも綺麗に作れます) 経験者には教えていただけませんか

  • R言語

    R studioでロジスティック回帰と線形判別分析の実行したいんですが以下のプログラムどう編集すればいいですか? m_max<-9#最初に来る数字の最大値 k_max<-0#次に来る数字の最大値 dname<-"C:/Users/" #C:/Users fname<-"Tomcat" install.packages('randomForest') library('randomForest') df <- read.csv(paste(dname,fname,".csv", sep = ""), header=T, row.names=NULL) # ↓これが最初に来る数字の初期値 for(m in 0:m_max){ set.seed(m) ds <- df[order(runif(nrow(df))),] # ↓これが次に来る数字の初期値 for(k in 0:k_max){ #データ分解 #d <- ds[-round(1+(nrow(df)/k_max)*(k-1)):-round(nrow(df)/k_max*k),] #write.csv(d, file=paste(dname,fname,"_cv_Fit_",k-1,"_",m-1,".csv", sep = ""),row.names = FALSE) #d <- ds[round(1+(nrow(df)/k_max)*(k-1)):round(nrow(df)/k_max*k),] #write.csv(d, file=paste(dname,fname,"_cv_Tst_",k-1,"_",m-1,".csv", sep = ""),row.names = FALSE) #Tomcat_cv_Fit_0_0 #分解データを表示 fit_name<-paste("C:/Users/","Tomcat_cv_Fit_",m,"_",k,".csv",sep="") fit.df<-read.csv(fit_name) test_name<-paste("C:/Users/","Tomcat_cv_Tst_",m,"_",k,".csv",sep="") test.df<-read.csv(test_name) #データ結合 D0 <- read.csv(paste("C:/Users/","Tomcat_cv_Fit_0_0.csv",sep="")) D1 <- read.csv(paste("C:/Users/","Tomcat_cv_Fit_1_0.csv",sep="")) D2 <- read.csv(paste("C:/Users/","Tomcat_cv_Fit_2_0.csv",sep="")) D3 <- read.csv(paste("C:/Users/","Tomcat_cv_Fit_3_0.csv",sep="")) #重回帰 result1=lm(bug~.,data=fit.df) #↓結果についてステップ関数 step.lm<-step(result1) #結果 summary(result1) #テストデータの予測 pred.lm<- predict(step.lm,test.df) #精度 #数値が低いほど信用度は高い #extractAIC(result1) #テストデータの予測 #p1 #index P1 <- predict(step.lm,test.df) #上のグラフ 縦横の名称があってるかは不明 (x,y)でxが横 これでいえばP1、yが縦 indexがテストデータ数 plot(P1)#点グラフ par(new=T)#重ね合わせ plot(P1,type="l")#折れ線 #------------------------------------------------------------------------------------ #ランダム森 result2=randomForest(formula=bug~.,data=fit.df) #result2=randomForest(formula=bug~.,data=fit.df,method="regression") #表示 summary(result2) #テストデータの予測 pred.rf<- predict(result2,test.df) #テストデータの予測 P2 <- predict(result2,test.df) #上のグラフ plot(P2) par(new=T) plot(P2,type="l") #----------------------------------------------------------------------------------- #ファイルにデータ出力 #FIT変数にfit.df+test.dfしたものを代入 FIT <- rbind(data.frame(fit.df),data.frame(test.df)) #↓アウトプット テキスト write.table(FIT,file="C:/Users/FIT.txt") #↓アウトプット csv write.table(FIT,file="C:/Users/FITcsv.csv") loc <- FIT$loc write.table(loc,file="C:/Users/LOC.txt") write.table(loc,file="C:/Users/LOCcsv.csv") bug <- FIT$bug write.table(bug,file="C:/Users/BUG.txt") write.table(bug,file="C:/Users/BUGcsv.csv") #---------------------------------------------------------------------------------------- sum_loc <- function(n) { if (n <= 1) return(1) else return( n * Recall(n-1) ) } sum_loc(10) #---------------------------------------------------------------------------------- if(m==0||k==0){ result_summary.df<-cbind(cbind(test.df,pred.lm),pred.rf) }else{ result_summary.df<-rbind(result_summary.df,cbind(cbind(test.df,pred.lm),pred.rf)) } } } write.csv(result_summary.df,paste(dname,"result_summary.csv",sep=""))

  • Excel,Accessの他言語からの起動について

    Cobolのような従来の事務言語の処理中にExcelやAccessといった簡易言語を起動させデータを受け渡す場合CSVで結果を出力して受け渡すことは、簡単にできます。しかし出力結果を自動でExcelやAccessに取り込ませて結果を出力させる場合には、特別な処理が必要だと思いますが、そのような事務処理言語での記述例や記述の仕方について教えてください。汎用機では半角(1バイト系)と全角(2バイト系)はシフトコードを挟み区別させています。また文字サイズをプログラム中でします。しかしExcel等では出力時に任意に文字サイズを指定できます。そのような事を汎用機でいうJCLの記述のような仕方でPCでできるのか。できるとすればどのように記述すればよいのかを例示しているサイトなどをご存じでしたらご教示ください。よろしくお願いします。

  • 言語選択についてアドバイスをお願いします。

    いつもお世話になっています。 言語選択についてアドバイスをお願いします。 下記処理を行うにあたり、どの言語で作成するのが効率がいいかアドバイスをお願いします。 【現在】 社内にて、先人が作った下記パターンのツールが数々あります。 ・ツールはEXCELを立ち上げて、EXCELのVBAから起動&制御している。 ・入力は他のEXCELBOOKのデータ(MAXで2シートぐらいに分割されたデータなので(65536×2)件ぐらいです。) ・処理は選択したBOOKをいったんACCESSのMDBに変換し、ACCESS、およびEXCELのVBAにてデータをこねくり回して結果をだしてます。 (処理速度を上げるためにMDBに変換していると思われます。) ・出力はMDBの結果をEXCELにもどしています。(出力結果が0件の場合もあれば相乗で2シートに収まらない場合もあります。) 【目指すところ】 勉強&処理効率向上のためにツールをすべて作り直したい。 僕のレベルはEXCELVBAでちょっとしたツールを作れるぐらいです。 (1)IEの画面からEXCELのBOOKを選択。 (2)BOOKのデータをMySQLに変換。 (3)データをこねくり回す。 (4)結果をEXCELに戻す。 メインはJAVAを勉強してチャレンジを考えてます。 (1)はHTML? (2)-1 JAVAでEXCELを読み込むのが大変そうなので、いったんVBScriptでCSVに変換する。 (2)-2 その後、JAVAにてCSVをMySQLにて変換。 (3) JAVAでデータをこねくり回す。結果をCSV出力。 (4) CSVをVBScriptでEXCELに戻す。 EXCELのデータをMySQLにする方法とか、この言語の方が開発しやすいよー等々、 言語選択についてアドバイスがあればよろしくお願いします。

  • SQL ServerのテーブルをCSVへ出力したい

    お世話になっております。 httpで、インターネット経由にて SQL Serverのテーブルから条件に合致したデータをCSVへ出力しダウンロードする 仕組みを作りたいと考えております。 例 ■テーブルA KeyA 項目1 項目2 001 100 200 002 200 250 003 300 350 select * from KeyA =para paraはパラメタとして渡し、結果をpara.CSVのようにCSVファイルへ出力したいのです。 sqlcmdを使えば、できそうな感じだったのですがよくわからなかったのが (1)sqlcmdのSQL文にパラメタを渡すことができるのか、できるのならどうやるのか (2)出力ファイル名もパラメタ化したいのだができるのか、できるのならどうやるのか (3)ネット経由でsqlcmdを実行することができるのか、できるのならどうやるのか (環境) SQLServer2008R2 IIS ご教授頂けましたら大変ありがたいです。 よろしくお願いいたします。

  • 重み付きユークリッド距離

    今,k-means法を使ったクラスタリングプログラムを作っています. 2次元特徴のパタン集合を分類してグラフィカルに表示するものです. wikipediaによると,k-means法は (1)各パタンをランダムにN個のクラスタに分類 (2)各クラスタの中心を計算 (3)全パタンについて中心との距離を計算し,一番近いクラスタに割り当て (4)割り当てに変化がなければ終了,変化があれば(2)へ のように書いてあり,自分も理解できていたつもりだったのですが, ステップ(3)の「全パタンについて中心との距離を計算し…」という 部分が作れなくて困っています. 指定ではパタン間距離に「重み付きユークリッド距離」を使えとのこと だったのですが,自分は2パタン間で重み付きユークリッド距離が 使えるというところが理解できていません. 2次元なので,単純に距離ならばユークリッド距離を使えばいいと 思っていたんですが. ネットで調べたところ, ・d^2 = Σ wi (xi - yi)^2 という式は見つかったのですが,重み係数wiをどのように設定すれば いいのか分かりません. 非常に初歩的な質問をしているのだと思いますが, 教えていただけると嬉しいですm(_ _)m

  • Windows2000/XP/2003 イベントログ解析

    Windowsイベントログをファイルに出力し、そのログを解析し、レポートに出力できるツールを探しています。何か良いツールはないでしょうか? Windowsイベントログ  出力:evt,txt,csv等(手動) 解析ツール  言語:日本語版  取込:evt,txt,csv等  レポート:情報・警告件数・エラー件数を表又は       円グラフなどで出力できるもの

  • 大学4年のものです

    突然すみません。統計をあつかったことがあり、かつR言語とtexを使った方に質問したいのですが。 クラスタ分析をrでプログラムを作り、樹計図をグラフに出力しました。でもそれをtexに張り付けてpdfとして出力がなかなかうまくいかず困っています。ネットでググりにググってもなかなかうまくいきません。pc機種はwindows7です、どうかよろしくお願いいたします。

  • csvファイルでの出力について

    C言語初心者です。 プログラミングにおいて質問なのですが、csvファイルを読み込み、 そのデータを用いて計算し、csvファイルで出力するという問題なのですが、C言語においてcsvファイル形式で出力するにはどのような方法がありますか? 補足:ラベル行に全角文字を入力しないといけません。

このQ&Aのポイント
  • NEC製ノートパソコンPC-LS350RSBでMicrosoft Office2013を使用している際、Excelファイルを開こうとすると「ファイル形式またはファイル拡張子が正しくありません」と表示され開けません。
  • 該当のExcelファイルは破損しておらず、ファイル拡張子とファイル形式が一致していることが確認されています。
  • 対処方法を教示いただけますか?
回答を見る