<jupyter_start><jupyter_text>ELASTICNET REGRESSION<jupyter_code>import numpy as np 
import pandas as pd 
from sklearn.linear_model import Ridge, Lasso, ElasticNet
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn import model_selection
import matplotlib.pyplot as plt 
from sklearn.linear_model import RidgeCV, LassoCV, ElasticNetCV
df = pd.read_csv("verisetleri\Hitters.csv")
df = df.dropna()
dms = pd.get_dummies(df[['League', 'Division', 'NewLeague']])
y = df["Salary"]
X_ = df.drop(['Salary', 'League', 'Division', 'NewLeague'], axis=1).astype('float64')
X = pd.concat([X_, dms[['League_N', 'Division_W', 'NewLeague_N']]], axis=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)
enet_model = ElasticNet().fit(X_train, y_train)
enet_model.coef_
enet_model.intercept_
# Tahmin
enet_model.predict(X_train)[0:10]
enet_model.predict(X_test)[0:10]
y_pred = enet_model.predict(X_test)
np.sqrt(mean_squared_error(y_test, y_pred))
r2_score(y_test, y_pred)<jupyter_output><empty_output><jupyter_text>Model Tunning<jupyter_code>enet_cv_model = ElasticNetCV(cv=10).fit(X_train, y_train)
enet_cv_model.alpha_
enet_cv_model.intercept_
enet_cv_model.coef_
# Final Modeli
enet_tuned_model = ElasticNet(alpha=enet_cv_model.alpha_).fit(X_train, y_train)
# Hata hesaplama
# Tahmin etme
y_pred = enet_tuned_model.predict(X_test)
np.sqrt(mean_squared_error(y_test, y_pred))
#############################################
alphas = 10**np.linspace(10, -2, 100)*0.5
enet_cv_model_aciklama = ElasticNetCV(alphas=alphas, cv=10).fit(X_train, y_train)
enet_tuned_model_aciklama = ElasticNet(alpha=enet_cv_model_aciklama.alpha_).fit(X_train, y_train)
y_pred_aciklama = enet_tuned_model_aciklama.predict(X_test)
np.sqrt(mean_squared_error(y_test, y_pred_aciklama))
# l1_ratio -> Bunun değeri 0(sıfır) olduğunda  l2 cezalandırılması, 1 olduğunda ise l1 cezalandırılması yapılır.
# Dolayısıyla 0 ile 1 arasında değişim olduğunda aslında cezalandırma metotlarının göreceli etkileri ifade edilmiş olur.
# Biz uygulamamız kapsamında ikisininde etkisinin aynı düzeyde olmasını istediğimizden dolayı buradaki l1_ratio oranı değerini 0.5 yani öntanımlı değeri olarak bırakmış olduk.  
# alpha ve l1_ratio parametrelerini beraber düşünecek olursak l1_ratio için aranacak bir liste verdiğimizde - biz bir liste vermedik. normalde tunning bölümünde alpha için liste verebileceğimizi söylemiştik ve vermiştik. tunning bölümünde l1_ratio içinde liste verilebilir. İkisinin birbirlerine karşı olan durumlarında optimum sonucun ne zaman geldiğini inceleyebilmek adına yapılabilir.- l1_ratio için bir liste verildiğinde her bir l1_ratio değeri için farklı alpha değerleri olacaktır. Ki bu durumda bu alfalar ceza terimleri etkilerini modele yansıtmış olacaktır. 
?ElasticNet
# son<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10172413793103448, 'fraction_numerical': 0.015862068965517243, 'mean_word_length': 7.953703703703703, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 10, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '535163', 'license': 'CC0-1.0', 'n_tokens_mistral': 1290, 'n_tokens_neox': 1210, 'n_words': 239, 'path': '8 2 5 ElasticNet Regresyon.ipynb', 'repo_name': 'celalaksu/Veri-Bilimi-renme-Notlar-m', 'size': '2900'}