thealper2's picture
Update app.py
be5fc68
import streamlit as st
import pickle
import numpy as np
import pandas as pd
import ast
st.title('Turkish TV Series Classification')
years = [i for i in range(1997, 2024)]
year = st.selectbox('Yayın tarihi:', years)
if year:
score_df = pd.read_csv(f'./best_models/best_df.csv', index_col=0)
score_df = score_df[score_df['Year'] == year]
features = score_df['Selected Features'].values[0]
model_name = score_df['Model Name'].values[0]
st.write(model_name)
model = pickle.load(open(f'./best_models/{year}/{model_name}.pkl', 'rb'))
rs = pickle.load(open(f'./best_models/{year}/rs.pkl', 'rb'))
day_encoder = pickle.load(open(f'./best_models/{year}/day_encoder.pkl', 'rb'))
le = pickle.load(open(f'./best_models/{year}/le.pkl', 'rb'))
features_to_models = {
'Tarih': -2,
'Dizi Adı Uzunluğu': -2,
'Dizi Adındaki Kelime Sayısı': -2,
'Dizi Adında Bağlaç': -2,
'Dizi Adında Yer İsmi': -2,
'Dizi Adında Özel İsim': -2,
'Aile': -2,
'Aksiyon': -2,
'Aşk': -2,
'Bilim Kurgu': -2,
'Dram': -2,
'Gençlik': -2,
'Gerilim': -2,
'Komedi': -2,
'Polisiye': -2,
'Romantik': -2,
'Tarihî': -2,
'TRT 1': -2,
'Kanal D': -2,
'atv': -2,
'Star TV': -2,
'Show TV': -2,
'FOX': -2,
'Samanyolu TV': -2,
'TV8': -2,
'in_turkey': -2,
'out_turkey': -2,
'book_to_movie': -2,
'act_count': -2,
'paid_channel': -2,
'Publication Day': '?',
'summer_series': -2,
'duration': -2,
'Ödüllü': -2,
'Senaristlerin Dizi Sayısı': -2,
'Ödüllü Senarist Sayısı': -2,
'Senaristlerin Aldığı Ödül Sayısı': -2,
'Başrollerin Dizi Sayısı': -2,
'Ödüllü Başrol Sayısı': -2,
'Başrollerin Aldığı Ödül Sayısı': -2,
'Yönetmenlerin Dizi Sayısı': -2,
'Ödüllü Yönetmen Sayısı': -2,
'Yönetmenlerin Aldığı Ödül Sayısı': -2,
'Görüntü Yönetmenlerinin Dizi Sayısı': -2,
'Yapım Şirketleri Dizi Sayısı': -2,
'Besteci Dizi Sayısı': -2,
'on_youtube': -2,
'on_facebook': -2,
'on_twitter': -2,
'on_instagram': -2,
'total_sm_accounts': -2,
}
if "'Tarih'" in features:
features_to_models['Tarih'] = year
if "'Dizi Adı Uzunluğu'" in features:
features_to_models['Dizi Adı Uzunluğu'] = st.number_input('Dizi adı uzunluğu:')
if "'Dizi Adındaki Kelime Sayısı'" in features:
features_to_models['Dizi Adındaki Kelime Sayısı'] = st.number_input('Dizi adındaki kelime sayısı:')
if "'Dizi Adında Bağlaç'" in features:
features_to_models['Dizi Adında Bağlaç'] = st.number_input('Dizi adında bağlaç var mı ? (0-Hayır, 1-Evet):')
if "'Dizi Adında Yer İsmi'" in features:
features_to_models[''] = st.number_input('Dizi adında yer ismi var mı ? (0-Hayır, 1-Evet):')
if "'Dizi Adında Özel İsim'" in features:
features_to_models['Dizi Adında Özel İsim'] = st.number_input('Dizi adında özel isim var mı ? (0-Hayır, 1-Evet):')
if "'Aile'" in features:
features_to_models['Aile'] = st.number_input('Aile türünde mi ? (0-Hayır, 1-Evet):')
if "'Aksiyon'" in features:
features_to_models['Aksiyon'] = st.number_input('Aksiyon türünde mi ? (0-Hayır, 1-Evet):')
if "'Aşk'" in features:
features_to_models['Aşk'] = st.number_input('Aşk türünde mi ? (0-Hayır, 1-Evet):')
if "'Bilim Kurgu'" in features:
features_to_models['Bilim Kurgu'] = st.number_input('Bilim Kurgu türünde mi ? (0-Hayır, 1-Evet):')
if "'Dram'" in features:
features_to_models['Dram'] = st.number_input('Dram türünde mi ? (0-Hayır, 1-Evet):')
if "'Gençlik'" in features:
features_to_models['Gençlik'] = st.number_input('Gençlik türünde mi ? (0-Hayır, 1-Evet):')
if "'Gerilim'" in features:
features_to_models['Gerilim'] = st.number_input('Gerilim türünde mi ? (0-Hayır, 1-Evet):')
if "'Komedi'" in features:
features_to_models['Komedi'] = st.number_input('Komedi türünde mi ? (0-Hayır, 1-Evet):')
if "'Polisiye'" in features:
features_to_models['Polisiye'] = st.number_input('Polisiye türünde mi ? (0-Hayır, 1-Evet):')
if "'Romantik'" in features:
features_to_models['Romantik'] = st.number_input('Romantik türünde mi ? (0-Hayır, 1-Evet):')
if "'Tarihî'" in features:
features_to_models['Tarihî'] = st.number_input('Tarihî türünde mi ? (0-Hayır, 1-Evet):')
if "'TRT 1'" in features:
features_to_models['TRT 1'] = st.number_input('TRT 1 kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):')
if "'Kanal D'" in features:
features_to_models['Kanal D'] = st.number_input('Kanal D kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):')
if "'atv'" in features:
features_to_models['atv'] = st.number_input('atv kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):')
if "'Star TV'" in features:
features_to_models['Star TV'] = st.number_input('Star TV kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):')
if "'Show TV'" in features:
features_to_models['Show TV'] = st.number_input('Show TV kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):')
if "'FOX'" in features:
features_to_models['FOX'] = st.number_input('FOX kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):')
if "'Samanyolu TV'" in features:
features_to_models['Samanyolu TV'] = st.number_input('Samanyolu TV kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):')
if "'TV8'" in features:
features_to_models['TV8'] = st.number_input('TV8 kanalında mı yayınlanıyor ? (0-Hayır, 1-Evet):')
if "'in_turkey'" in features:
features_to_models['in_turkey'] = st.number_input('Türkiyede mi çekildi ? (0-Hayır, 1-Evet):')
if "'out_turkey'" in features:
features_to_models['out_turkey'] = st.number_input('Yurtdışında mı çekildi ? (0-Hayır, 1-Evet):')
if "'book_to_movie'" in features:
features_to_models['book_to_movie'] = st.number_input('Uyarlama mı ? (0-Hayır, 1-Evet):')
if "'act_count'" in features:
features_to_models['act_count'] = st.number_input('Başroldeki aktör sayısı:')
if "'paid_channel'" in features:
features_to_models['paid_channel'] = st.number_input('Ücretli bir kanalda mı yayınlanıyor ? (0-Hayır, 1-Evet):')
if "'Publication Day'" in features:
features_to_models['Publication Day'] = st.text_input('Yayınlandığı gün (İngilizce olarak girin.):')
if "'summer_series'" in features:
features_to_models['summer_series'] = st.number_input('Yaz dizisi (Temmuz, Ağustos) mi ? (0-Hayır, 1-Evet):')
if "'duration'" in features:
features_to_models['duration'] = st.number_input('Ortalama bölüm uzunluğu:')
if "'Ödüllü'" in features:
features_to_models['Ödüllü'] = st.number_input('Altın kelebek ödülü aldı mı ?:')
if "'Senaristlerin Dizi Sayısı'" in features:
features_to_models['Senaristlerin Dizi Sayısı'] = st.number_input('Senaristlerin yazdığı ortalama dizi sayısı:')
if "'Ödüllü Senarist Sayısı'" in features:
features_to_models['Ödüllü Senarist Sayısı'] = st.number_input('Ödüllü senarist sayısı:')
if "'Senaristlerin Aldığı Ödül Sayısı'" in features:
features_to_models['Senaristlerin Aldığı Ödül Sayısı'] = st.number_input('Senaristlerin aldığı ortalama ödül sayısı:')
if "'Başrollerin Dizi Sayısı'" in features:
features_to_models['Başrollerin Dizi Sayısı'] = st.number_input('Başrollerin ortalama dizi sayısı:')
if "'Ödüllü Başrol Sayısı'" in features:
features_to_models['Ödüllü Başrol Sayısı'] = st.number_input('Ödüllü başrol sayısı:')
if "'Başrollerin Aldığı Ödül Sayısı'" in features:
features_to_models['Başrollerin Aldığı Ödül Sayısı'] = st.number_input('Başrollerin aldığı ortalama ödül sayısı:')
if "'Yönetmenlerin Dizi Sayısı'" in features:
features_to_models['Yönetmenlerin Dizi Sayısı'] = st.number_input('Yönetmenlerin ortalama dizi sayısı:')
if "'Ödüllü Yönetmen Sayısı'" in features:
features_to_models['Ödüllü Yönetmen Sayısı'] = st.number_input('Ödüllü yönetmen sayısı:')
if "'Yönetmenlerin Aldığı Ödül Sayısı'" in features:
features_to_models['Yönetmenlerin Aldığı Ödül Sayısı'] = st.number_input('Yönetmenlerin aldığı ortalama ödül sayısı:')
if "'Görüntü Yönetmenlerinin Dizi Sayısı'" in features:
features_to_models['Görüntü Yönetmenlerinin Dizi Sayısı'] = st.number_input('Görüntü yönetmenlerinin ortalama dizi sayısı:')
if "'Yapım Şirketleri Dizi Sayısı'" in features:
features_to_models['Yapım Şirketleri Dizi Sayısı'] = st.number_input('Yapım şirketlerinin ortalama dizi sayısı:')
if "'Besteci Dizi Sayısı'" in features:
features_to_models['Besteci Dizi Sayısı'] = st.number_input('Bestecilerin ortalama dizi sayısı:')
if "'on_youtube'" in features:
features_to_models['on_youtube'] = st.number_input('Youtube hesabı var mı ? (0-Hayır, 1-Evet):')
if "'on_facebook'" in features:
features_to_models['on_facebook'] = st.number_input('Facebook hesabı var mı ? (0-Hayır, 1-Evet):')
if "'on_twitter'" in features:
features_to_models['on_twitter'] = st.number_input('Twitter hesabı var mı ? (0-Hayır, 1-Evet):')
if "'on_instagram'" in features:
features_to_models['on_instagram'] = st.number_input('Instagram hesabı var mı ? (0-Hayır, 1-Evet):')
if "'total_sm_accounts'" in features:
features_to_models['total_sm_accounts'] = st.number_input('Toplam sosyal medya hesabı sayısı:')
if st.button('Tahmin Et'):
test = pd.DataFrame(features_to_models, index=[0])
test_df_names = []
for key, value in features_to_models.items():
if value != -2 and value != '?':
test_df_names.append(key)
#st.write(test_df)
numerical_variables = [col for col in test.columns if pd.api.types.is_numeric_dtype(test[col])]
if features_to_models['Publication Day'] != '?':
test['Publication Day'] = day_encoder.transform(test['Publication Day'].values.reshape(-1, 1))
test[numerical_variables] = rs.transform(test[numerical_variables])
test_small = test[test_df_names]
#st.dataframe(test_small)
predicted = model.predict(test_small)
prediction = le.classes_[predicted]
st.success(f'Tahminen bu dizi {prediction}')