Bilişim dünyasına kaliteli, özgün ve Türkçe içerikler kazandırmayı hedefleyen bir platform..

friends friends friends

LASSO (Least Absolute Shrinkage and Selection Operator)

LASSO (Least Absolute Shrinkage and Selection Operator), değişken seçimli ve cezalandırmalı regresyon tekniğidir. Bu yöntem, önemsiz değişkenlerin ağırlıklarını sıfıra çekerek modelin aşırı öğrenmesini (overfitting) önlemeye çalışır.
 

import pandas as pd
from sklearn.linear_model import LassoCV
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
import numpy as np

# 1. Excel dosyasını oku (örnek dosya adı: alfalfa_data.xlsx)
df = pd.read_excel("alfalfa_data.xlsx")

# 2. Özellik ve hedef sütunlarını ayarla
# Özellikler: bitki indeksleri (değiştirilebilir)
features = ['NDVI', 'GNDVI', 'EVI', 'TDVI', 'MSR', 'OSAVI', 'MNLI', 'CWSI']
target = 'yield'

X = df[features]
y = df[target]

# 3. Veriyi eğitim ve test olarak ayır
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 4. Özellikleri ölçeklendir
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 5. LASSO modeli uygula (Cross-validation ile alfa seçimi)
lasso = LassoCV(cv=5, random_state=42)
lasso.fit(X_train_scaled, y_train)

# 6. Tahmin yap
y_pred = lasso.predict(X_test_scaled)

# 7. Performans değerlendirmesi
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
r2 = r2_score(y_test, y_pred)

print("Optimal alfa değeri:", lasso.alpha_)
print("RMSE:", rmse)
print("R²:", r2)

# 8. Önemli değişkenleri göster
coefficients = pd.Series(lasso.coef_, index=features)
print("\nSeçilen önemli değişkenler:")
print(coefficients[coefficients != 0])

# 9. Gerçek vs Tahmin grafiği
plt.figure(figsize=(6, 6))
plt.scatter(y_test, y_pred, c='blue')
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'r--')
plt.xlabel("Gerçek Verim (kg)")
plt.ylabel("Tahmin Edilen Verim (kg)")
plt.title("LASSO: Gerçek vs Tahmin Edilen Alfalfa Verimi")
plt.grid(True)
plt.tight_layout()
plt.show()
0 Beğeni
Makine Öğrenmesi
Önceki Yazı

CSS ile Grid Background

02 Nis. 2025 tarihinde yayınlandı.
Sonraki Yazı

Lucidchart

02 Nis. 2025 tarihinde yayınlandı.
arrow