Her satırın virgülle ayrılmış değerler listesi içerdiği, veri vektörlerini içeren bir dosyam var. Mahout kullanarak bu verilere k-aracı kümelemenin nasıl yapıldığını merak ediyorum. Wiki'de verilen örnek, sequenceFiles'i oluşturduğundan bahseder, ancak aksi takdirde bu sequenceFiles'ı elde etmek için bir tür dönüşüm yapmam gerekip gerekmediğinden emin değilim.Postalamada k-aracı kümeleme CSV olarak depolanan vektör verileriyle nasıl gerçekleştirilir?
cevap
CSV dosyasındaki girişleri el ile okumanızı, onlardan NamedVectors oluşturmayı ve ardından bir sıra dosyasında vektörleri yazmak için bir sıra dosyası yazıcısı kullanmayı öneririm. Oradan, KMeansDriver çalıştırma yöntemi bu dosyaların nasıl ele alınacağını bilmelidir.
Sıralama dosyaları anahtar/değer çiftlerini kodlar; bu nedenle anahtar örnekte bir kimlik olur (bir dize olmalı) ve değer vektörlerin etrafında VectorWritable bir sarıcıdır. Ayrıca
List<NamedVector> vector = new LinkedList<NamedVector>();
NamedVector v1;
v1 = new NamedVector(new DenseVector(new double[] {0.1, 0.2, 0.5}), "Item number one");
vector.add(v1);
Configuration config = new Configuration();
FileSystem fs = FileSystem.get(config);
Path path = new Path("datasamples/data");
//write a SequenceFile form a Vector
SequenceFile.Writer writer = new SequenceFile.Writer(fs, config, path, Text.class, VectorWritable.class);
VectorWritable vec = new VectorWritable();
for(NamedVector v:vector){
vec.set(v);
writer.append(new Text(v.getName()), v);
}
writer.close();
Ben Mahout in Action bölüm 8 okuma öneriyoruz:
İşte bunun nasıl basit bir kod örneğidir. Mahout'daki veri temsili hakkında daha fazla ayrıntı verir.
bazı kod parçacıkları bulabilirsiniz emin bölüm 8 ücretsiz bir örnek! http://manning.com/owen/MiA_SampleCh08.pdf –
Vektör adlarını kümeleme sonuçlarından nasıl geri alabileceğimi biliyor musunuz? Bkz. Http://stackoverflow.com/questions/14476706/dumping-clustering-result-with-vectors-names – exic
Örneğinizde küçük bir hata var (bunu yayınladığınız için teşekkürler, BTW). "Writer.append (yeni Metin (v.getName()), v) yerine"; "Write.append (yeni Text (v.getName()), vec) olması gerektiğini düşünüyorum." Aksi takdirde "java.io.IOException: yanlış değer sınıfı: org.apache.mahout.math.NamedVector sınıf org.apache.mahout.math.VectorWritable değil" şeklinde bir istisna alırsınız. – user311121
- 1. nasıl gerçekleştirilir
- 2. Gecikme ile Segue Nasıl Gerçekleştirilir
- 3. mahout lucene belge kümeleme nasıl?
- 4. Scikit'te Kernel Yoğunluk Tahminini 1D kümeleme yöntemi olarak nasıl kullanırsınız?
- 5. Dizi verileriyle döngü yapılması
- 6. MEF GetExportedValue meta verileriyle
- 7. HTM olarak CSV yüklemeleri
- 8. Çevrimiçi k-ortalamalar kümeleme
- 9. Erlang'ın gen_server ile periyodik olarak eylemler nasıl gerçekleştirilir?
- 10. İşlevden eylem (dinleyici) nasıl gerçekleştirilir?
- 11. Delphi'de paralel döngü nasıl gerçekleştirilir?
- 12. Python'u kullanarak metin dosyamda dahili olarak depolanan verileri nasıl değiştirebilirim?
- 13. Veritabanında depolanan birden çok dosyayı bayt olarak nasıl indirilir
- 14. dplyr ve POSIXlt verileriyle ilgili sorunlar
- 15. Vektör
- 16. Json verilerini json verileriyle nasıl yüklerim?
- 17. Cassandra'da Kümeleme Anahtarları
- 18. R Kümeleme 'saflık' metriği
- 19. Solr kümeleme bileşeni nedir?
- 20. İskele oturumu kümeleme ClassNotFoundException
- 21. Java'da Markov kümeleme algoritması
- 22. İstemci Tarafı Json olarak CSV
- 23. Kazanç uygulamasında önbelleğe alma verileriyle ilgili olarak C#
- 24. Her 5 sonuçta nasıl bir eylem gerçekleştirilir?
- 25. Nodejs Kümeleme ve ekspres oturumları
- 26. Django'da DB bit sorgular nasıl gerçekleştirilir?
- 27. R dilinde write.csv doğrudan tar.gz biçiminde nasıl gerçekleştirilir?
- 28. Flexclust'tan kümeleme performans istatistikleri nasıl oluşturulur?
- 29. Mesafe Matrisine Dayalı Kümeleme Metodu
- 30. excel hücre formatını "date like" verileriyle metin olarak tutun
Bunun için mahout kullanmak gerekir ya da bir şey yapacak mı mahout formatında vektörleri yazmak için Fil Bird kullanabilir? Bunu kolayca yapabilecek çok sayıda küme apihi, araç, örnek kod vb. Var. Tek bir dosyanız varsa, veri noktalarınız oldukça küçük olabilir, Mahout teoride büyük ölçekli problemler içindir. – Steve
Kümeleme veri kümelerine buradan bakıyorum: http://www.grouplens.org/node/73 En büyük veri kümesi potansiyel olarak 10,000 ila 72.000 veri noktası içeriyor. Bu yüzden mahout en iyi olabileceğini düşündüm, WEKA küçük veri kümelerini yüklemeye çalıştığımda çöküyor –
http://glaros.dtc.umn.edu/gkhome/software'i deneyin, Weka'nın da bir SDK'si var. k-araçlar çoğu dilde uygulamak için oldukça düz ileri, bu yüzden ben google – Steve