Untitled

 avatar
unknown
plain_text
2 months ago
2.5 kB
4
Indexable
# Gerekli Kütüphaneler
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_absolute_error, r2_score
import matplotlib.pyplot as plt
import seaborn as sns

# Veri Yükleme
df = pd.read_csv('WEC_Perth_49.csv')

# Veri Ön İşleme
# Sayısal sütunları seç
df = df.select_dtypes(include=['float64', 'int64'])

# Eksik Değer Kontrolü
print("Eksik Değer Sayıları:\n", df.isnull().sum())
df = df.dropna()  # Eksik değerleri kaldır

# Aykırı Değer Kontrolü (IQR Yöntemi)
Q1 = df.quantile(0.25)
Q3 = df.quantile(0.75)
IQR = Q3 - Q1
df = df[~((df < (Q1 - 1.5 * IQR)) | (df > (Q3 + 1.5 * IQR))).any(axis=1)]
print("Aykırı Değerler Temizlendi")

# Hedef ve Bağımsız Değişkenleri Belirle
if 'Total_Power' in df.columns:
    y = df['Total_Power']
    X = df.drop(columns=['Total_Power'])
else:
    raise ValueError("Hedef değişken 'Total_Power' veri setinde bulunamadı.")

# Özellik Ölçeklendirme
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# Veri Setini Ayırma (%80 Eğitim, %20 Test)
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

# Model Oluşturma ve Eğitim
model = LinearRegression()
model.fit(X_train, y_train)

# Tahmin Yapma
y_pred = model.predict(X_test)

# Performans Metrikleri
mae = mean_absolute_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print("Mean Absolute Error (MAE):", mae)
print("R-squared (R²):", r2)

# Gerçek ve Tahmin Değerlerini Görselleştirme
plt.figure(figsize=(10, 6))
sns.scatterplot(x=y_test, y=y_pred)
plt.xlabel('Gerçek Değerler (Total_Power)')
plt.ylabel('Tahmin Edilen Değerler (Total_Power)')
plt.title('Gerçek vs Tahmin Edilen Değerler')
plt.show()

# Artıkların Dağılımı
residuals = y_test - y_pred
plt.figure(figsize=(10, 6))
sns.histplot(residuals, kde=True, bins=30)
plt.title('Artıkların Dağılımı')
plt.show()

# Artıkların Saçılım Grafiği
plt.figure(figsize=(10, 6))
sns.scatterplot(x=y_pred, y=residuals)
plt.axhline(y=0, color='r', linestyle='--')
plt.title('Tahmin Edilen Değerler vs Artıklar')
plt.show()

# Katsayılar ve Değişken Önem Düzeyi
coefficients = pd.DataFrame({'Feature': X.columns, 'Coefficient': model.coef_})
print("Değişkenlerin Regresyon Katsayıları:")
print(coefficients.sort_values(by='Coefficient', ascending=False))
Editor is loading...
Leave a Comment