marketBasket / app.py
drmurataltun's picture
Update app.py
79cc0d5 verified
import streamlit as st
import pandas as pd
from mlxtend.frequent_patterns import apriori, association_rules
# Verileri yükleme
rules = pd.read_csv('Apriori_rules.csv')
dataset = pd.read_csv('market_basket_dataset.csv')
# Ürün listesini çıkarma
product_list = dataset['Itemname'].unique().tolist()
# Streamlit başlığı
st.title('Market Sepeti Analizi ve Ürün Önerisi')
# Kullanıcıya ürün seçme imkanı sağlama
selected_products = st.multiselect('Sepetinize ürün ekleyin:', product_list)
# Seçilen ürünlere göre öneri fonksiyonu
def get_recommendations(selected_products, rules):
recommendations = set()
# Seçilen tüm ürünlerin kurallara uygun olup olmadığını kontrol et
matching_rules = rules[rules['antecedents'].apply(lambda x: set(eval(x)) & set(selected_products))]
for antecedents, consequents in zip(matching_rules['antecedents'], matching_rules['consequents']):
antecedents_set = set(eval(antecedents))
consequents_set = set(eval(consequents))
recommendations.update(consequents_set.difference(antecedents_set))
# Seçilen ürünler zaten sepette olduğundan, onları önerilerden çıkar
return recommendations.difference(set(selected_products))
# Önerileri gösterme
if selected_products:
st.write('Sepetiniz:', selected_products)
recommendations = get_recommendations(selected_products, rules)
if recommendations:
st.write('Bu ürünleri de almak isteyebilirsiniz:')
for recommendation in recommendations:
st.write('- ', recommendation)
else:
st.write('Önerilecek başka ürün bulunmamaktadır.')
# Destek ve güven değerlerine göre filtreleme
support_threshold = st.slider('Minimum Destek Değeri:', 0.0, 1.0, 0.01)
confidence_threshold = st.slider('Minimum Güven Değeri:', 0.0, 1.0, 0.01)
filtered_rules = rules[(rules['support'] >= support_threshold) & (rules['confidence'] >= confidence_threshold)]
st.write('Filtrelenmiş Birliktelik Kuralları:')
st.dataframe(filtered_rules)