Oda sayısı, balkon var mı yok mu? Cephe kuzey mi güney mi? İl/İlçe. Banyo sayısı. Merkezi Isıtma/Soba/Kombi mi? Bu featurelara göre ev fiyat bilgisi veren örnek bir veri seti verir misin?
Elbette, size örnek bir ev ilanları veri seti oluşturabilirim. Bu veri seti, evlerin oda sayısı, balkon varlığı, cephesi (kuzey veya güney), il/ilçe konumu, banyo sayısı ve ısıtma tipi (merkezi ısıtma, soba veya kombi) gibi özelliklerini içerecek ve her bir ev için tahmini bir fiyat sağlayacak. İşte bu özelliklere göre düzenlenmiş örnek bir veri seti:
Ev ID Oda Sayısı Balkon Varlığı Cephe İl/İlçe Banyo Sayısı Isıtma Tipi Tahmini Fiyat (TL)
1 3 Var Güney İstanbul/Kadıköy 2 Kombi 750.000
2 2 Yok Kuzey Ankara/Çankaya 1 Merkezi Isıtma 450.000
3 4 Var Güney İzmir/Konak 2 Soba 600.000
4 1 Var Kuzey Bursa/Osmangazi 1 Kombi 300.000
5 3 Yok Kuzey Antalya/Muratpaşa 1 Merkezi Isıtma 500.000
Bu tablo, gerçek verilere dayanmayan, sadece bir örnek olarak oluşturulmuş kurgusal bir veri setidir. Gerçek veri setleri genellikle çok daha fazla sayıda örnek ve daha detaylı özellikler içerir.
Şimdi bu verilerin 20 bin adet olduğunu varsayılım. Apache Spark ile verdiğim özelliklere göre ev fiyatı tahmin eden Java ile yazılmış bir tahmin modeli oluşturmak istiyorum. Adım adım ne yaptığını yazıp kodlamanı istiyorum.
Modelle tahminleme yapmak için öncelikle eğitilmiş bir modelinizin olması gerekiyor. Yukarıda bahsedilen adımlarla bir model eğittikten sonra, bu modeli kullanarak yeni veri üzerinde tahminleme yapabilirsiniz. Java'da Apache Spark kullanarak bu işlemi gerçekleştirecek bir uygulama yazalım:
java
Copy code
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.ml.feature.VectorAssembler;
import org.apache.spark.ml.regression.LinearRegressionModel;
public class HousePricePrediction {
public static void main(String[] args) {
// SparkSession başlatma
SparkSession spark = SparkSession.builder().appName("House Price Prediction").getOrCreate();
// Eğitilmiş modeli yükleme
LinearRegressionModel model = LinearRegressionModel.load("path/to/your/saved/model");
// Yeni veri setini yükleme
Dataset<Row> newDF = spark.read().option("header", "true").csv("path/to/your/new/data.csv");
// Yeni veriler için özellik mühendisliği (eğitim veri setiyle aynı ön işlemler)
// ...
// Özellikleri vektör olarak birleştirme
VectorAssembler assembler = new VectorAssembler().setInputCols(new String[]{"oda", "balkon", ...}).setOutputCol("features");
Dataset<Row> transformedNewData = assembler.transform(newDF);
// Tahminleme yapma
Dataset<Row> predictions = model.transform(transformedNewData);
// Tahminleri gösterme veya kaydetme
predictions.select("fiyat").show();
spark.stop();
}
}
Bu kod parçacığı, eğitilmiş bir modeli yükler ve yeni veri seti üzerinde tahminler yapar. Burada dikkat edilmesi gereken noktalar:
newDF: Tahmin yapmak istediğiniz yeni veri setidir. Bu veri seti, model eğitimi sırasında kullanılan veri setiyle aynı formatta olmalıdır.
Özellik Mühendisliği: Yeni veri seti üzerinde, model eğitimi sırasında uyguladığınız aynı ön işleme adımlarını uygulamanız gerekmektedir.
assembler: Modelin eğitimi sırasında kullanılan özellikleri vektör formuna dönüştürmek için kullanılır.
model.transform(transformedNewData): Bu, yeni veri seti üzerinde tahmin yapmak için kullanılır.
predictions.select("predictedLabel").show(): Bu satır, tahmin edilen değerleri gösterir. İsterseniz bu tahminleri bir dosyaya kaydedebilir veya başka bir işlem için kullanabilirsiniz.
Bu uygulama, modelinizi gerçek dünya verileri üzerinde test etmek ve tahminler yapmak için kullanılabilir. Gerçek bir uygulamada, veri ön işleme ve özellik mühendisliği adımları daha karmaşık olabilir ve modelinizin doğruluğunu artırmak için ek ayarlamalar gerekebilir.